Webカメラの映像をLAN内に配信する方法を探していたところ、Owncastというソフトを利用すると簡単に行えましたので、手順をまとめておきます。
必要なもの
- パソコン(LinuxもしくはWindows Subsystem for Linuxが動くWindows)
- Webカメラ(内蔵もしくはUSB接続)
Owncastのインストール
公式サイト(Owncast - Free and Open Source Livestreaming)
下記のページにアクセスします。
「I want to use the Owncast Quick Installer Script.」をクリックします。
ターミナルで適当なディレクトリに移動しておき、スクリプトを実行します。
curl -s https://owncast.online/install.sh | bash
もしセキュリティ上、スクリプトの実行が難しい場合はQuickstartの画面で「I want to download a release of Owncast.」を選択すれば実行ファイルのみをダウンロードすることもできます。
Owncastの実行
ディレクトリの中に「owncast」というディレクトリが生成されるのでcdコマンドで移動します。
cd owncast/
移動したら「./owncat」を実行します。
./owncast
画面に下記のように初期設定内容が表示されれば成功です。
INFO[2024-12-22T00:06:31+09:00] Owncast v0.1.3-linux-64bit (6ae3167b61d8485d3f269bd422f0c1a1f072ea5c)
INFO[2024-12-22T00:06:31+09:00] Web server is listening on port 8080.
INFO[2024-12-22T00:06:31+09:00] Configure this server by visiting /admin.
ブラウザからowncastを実行したアドレスをアクセスします。(下記は192.168.100.200のIPアドレスのパソコンで実行した場合)
192.168.100.200/admin
認証画面が表示されるのでユーザー名「admin」、パスワード「abc123」を入力してアクセスします。
左側の「HOME」をクリックします。
配信をするために必要な情報を控えます。
Streaming URLの値
Streaming Keysの値
Owncastへ配信する方法
配信元の設定を行っていてきます。
Broadcasting Software - Owncast
配信元のソフトはOBS Studioやffmpegなどが使えます。
OBS Studioの方がグラフィカルに設定できるのですが、今回は非力なパソコンを想定してffmpegで使用してみます。
初めに接続されているビデオデバイスを調べます。
v4l2-ctl --list-devices
次に接続されているオーディオデバイスを調べます。
arecord --list-devices
しらべたデバイス情報を用いて下記のようなコマンドを組み立てて実行します。
(ビデオデバイスで/dev/video2、オーディオデバイスでhw1,0を使用する場合)
ffmpeg -f alsa -ac 2 -i hw:1,0 -thread_queue_size 64 \
-f v4l2 -framerate 60 -video_size 1280x720 -input_format yuyv422 -i /dev/video2 \
-c:v libx264 -preset veryfast -b:v 1984k -maxrate 1984k -bufsize 3968k \
-vf "format=yuv420p" -g 60 -c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://<ip-of-your-server>/live/<your-streaming-key>
上記のコマンドでうまく動作しない場合はffmpeg -f alsa -ac 2 -i hw:1,0をffmpeg -f alsa -ac 1 -i plughw:1,0とするとうまく動くようになるかもしれません。
他にもSSL化やCDNの利用なども公式のドキュメントに載っています。
今回は省略しましたがowncastの管理画面からコメント有効の有無やオフライン時のメッセージや画面下部の説明のカスタマイズも可能です。
また、取得しているドメインを関連付けたりすると外部に公開することもできます。
試せていませんがCloudflare ZeroTrustのCloudflare Accessを利用することで外部の特定の人にだけアクセスさせることもできるかと思います。
0 コメント:
コメントを投稿