🗂
RTMPサーバーでローカルにある動画を配信する
この記事はAkitoshi's Advent Calendar 2024の5日目の記事です
これは何
Nginxを使ってRTMPサーバーを建ててひたすらローカルにある動画ファイルを連続再生するストリーミングサーバーを作る話
環境
OS
Ubuntu Server
ソフトウェア
Nginx(RTMP モジュール付き)
FFmpeg(動画のエンコードおよび配信に使用)
Nginx + RTMP モジュールのインストール
必要なパッケージのインストール
sudo apt update
sudo apt install -y nginx libnginx-mod-rtmp ffmpeg
Nginx の設定変更
Nginx の設定ファイルを編集し、RTMP サーバーを有効にします。
sudo nano /etc/nginx/nginx.conf
以下の設定をファイルの末尾に追加します。
rtmp {
server {
listen 1935; # RTMP ポート
chunk_size 4096;
application live {
live on; # ライブ配信を有効化
record off; # 配信の録画を無効化
}
}
}
Nginx の再起動
設定を反映させるため、Nginx を再起動します。
sudo systemctl restart nginx
ローカル動画ファイルを配信する
FFmpeg を使用した RTMP 配信
FFmpeg を使用して、ローカルの動画ファイルを RTMP サーバーに送信します。
以下のコマンドを使用します。
ffmpeg -re -i /path/to/your/video.mp4 -c:v copy -c:a aac -f flv rtmp://localhost/live/stream
/path/to/your/video.mp4: 配信する動画ファイルのパスを指定します。
rtmp://localhost/live/stream: 配信先の RTMP サーバー URL。
配信の確認
RTMP 配信を確認するには、以下の方法を使用します。
VLC メディアプレイヤーでの確認
VLC メディアプレイヤーを起動します。
「メディア」 → 「ネットワークストリームを開く」 を選択します。
URL に rtmp://<サーバーのIPアドレス>/live/stream を入力して再生を開始します。
OBS Studio または他の RTMP クライアントでの確認
RTMP URL を指定してストリームを確認できます。
配信の自動化(スクリプトの使用)
配信スクリプトの作成
以下のスクリプトを stream.sh として保存します。
#!/bin/bash
# 配信する動画ファイル
VIDEO_FILE="./videos/processed/merged.mp4"
# RTMP サーバーの URL
RTMP_URL="rtmp://localhost/live/stream"
# 配信開始
ffmpeg -re -i "$VIDEO_FILE" -c:v copy -c:a aac -f flv "$RTMP_URL"
スクリプトに実行権限を付与します。
chmod +x stream.sh
配信スクリプトの実行
以下のコマンドでスクリプトを実行し、配信を開始します。
./stream.sh
配信の停止
RTMP 配信を停止するには、ffmpeg プロセスを終了します。
pkill -f ffmpeg
Discussion