ライブ配信サーバーを構築します(Docker使用)


以前、ライブストリーミングサーバーを作成しましたが、今度はDockerを使って楽に構築します。






https://minokamo.tokyo/2022/01/10/4291/




検索していたらイメージがあったのでこれで試します。





https://hub.docker.com/r/tiangolo/nginx-rtmp/





docker run -d -p 1935:1935 --name live tiangolo/nginx-rtmp




エラーが発生しました。ARMベースのインスタンスだったので動作しませんでした。諦めてAMD64のインスタンスで確認します。





WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested





docker rm live
docker rmi tiangolo/nginx-rtmp




コンテナとイメージを削除して、イメージを検索していると比較的新しく人気があるものがあったのでこちらで試します。AWSのフリープランで作業します。ポート番号に1935を使用するのでインバウンドルールでこのトラフィックを許可しておきます。また、ブラウザでも確認するので、それらのポートも許可しておきます。





https://hub.docker.com/r/alqutami/rtmp-hls





このインスタンスは作成したばかりでポート番号80は使用していないので次のようにコマンド入力しました。





docker run \
--name live \
-p 80:80 \
-p 1935:1935 \
-d alqutami/rtmp-hls




うまく起動できました。次はOBS Studioの設定をします。配信項目でサービスをカスタムとして、サーバーとストリームキーの項目に次の内容を記述します。





サーバー:rtmp://awsのパブリックIPアドレス:1935/live
ストリームキー:test









このコンテナの仕様がこうなっているのでそうします。「配信開始」をクリックするとうまく接続できたようです。接続ができたので、この配信の内容を見てみます。VLCメディアプレイヤーを開いて「メディア」→「ネットワークストリームを開く」と進みます。ネットワークURLには「サーバー+ストリームキー」を記述します。









OBSの配信範囲をVLCメディアプレイヤーで確認することができました。









次はブラウザで配信内容を見てみます。しかし、ブラウザでアクセスできないのでコンテナに入って設定ファイルを確認します。





docker exec -it live bash




続いてNGINXの設定ファイルを確認します。するとポート番号に8080を使用することになっていました。これではアクセスできません。この対処方法はNGINXの設定ファイルを変更するか、docker runでコンテナ側のポート番号を8080を使用するように起動するかです。今回は後者の方法で試すことにします。実はサイトのページに記載があったのですが見逃していました。









cat /etc/nginx/nginx.conf




コンテナを停止して削除します。





docker stop live
docker rm live




再度ポート番号を変更してコマンドを入力します。





docker run \
--name live \
-p 80:8080 \
-p 1935:1935 \
-d alqutami/rtmp-hls




これでブラウザでアクセスできるはずです。ブラウザでアクセスするファイルはコンテナ内の次の場所にあります。





cd /usr/local/nginx/html/








OBS Studioで配信をした後で、ブラウザで確認します。





http://awsのパブリックIPアドレス/players/hls.html





OBS Studioで設定した配信範囲をブラウザで見ることができました。









またアクセス統計情報を確認することもできます。





http://awsのパブリックIPアドレス/stats










年別アーカイブ一覧