FFmpeg で動画や静止画 + 音声を YouTube Live 配信する
FFmpeg で YouTube Live 配信する方法についてまとめておきます。ここで示すのは以下の方法です。
- 既存の映像をランダムで配信する
- 静止画と音声を配信する
既存の映像をランダムで配信する
複数の音声付き動画ファイルをランダムに配信するシェルスクリプトです。
#!/bin/sh
stream_key="ストリームキー"
while true
do
# カレントディレクトリの mp4 ファイルのパスをランダムに取得
movie_file=`ls -1 *.mp4 | sort -R | head -n 1`
# 同じコーデック設定で配信
ffmpeg -re -i ${movie_file} -codec copy \
-f flv rtmp://a.rtmp.youtube.com/live2/${stream_key}
done
当初は Raspberry Pi を使って配信しようと思ったのですが、フル HD(1920×1080)サイズの動画を流そうとしたらスペックが足りませんでした。
以下のように ls -1 で適当なディレクトリの mp4 ファイル一覧に対し、sort コマンドを使ってランダムに並べ、その一番上だけを head -n 1 で取り出しています。
ls -1 *.mp4 | sort -R | head -n 1
取り出したファイル名を ffmpeg に流してストリーム配信します。while true ループを使って無限ループさせ、止めるまで配信し続けます。tmux などのターミナルマルチプレクサで動かし続けるとずっと配信できるでしょう。
静止画と音声を配信する
常に同じ静止画と音声を順番に BGM として配信するシェルスクリプトです。
#!/bin/sh
stream_key="ストリームキー"
image_file="画像ファイル.jpg"
while true
do
for audio_file in *.mp3
do
ffmpeg -loop 1 -r 30000/1001 \
-i ${image_file} -i "${audio_file}" \
-vcodec libx264 -acodec aac -strict experimental -ab 320k -ac 2 -ar 48000 \
-pix_fmt yuv420p -shortest -f flv rtmp://a.rtmp.youtube.com/live2/${stream_key}
done
done
これも while true ループを使って無限ループさせ、止めるまで配信し続けます。また audio_file としてカレントディレクトリの mp3 ファイルで for ループさせていますが、上記の動画と同様に sort -R | head -n 1 を組み合わせればランダムにもできます。
上記と同じく tmux などのターミナルマルチプレクサで動かし続けるとずっと配信できます。
他の配信例
Raspberry Pi を使って Web カメラから YouTube ライブを配信する方法を次の記事「FFmpeg を使って YouTube Live にカメラ配信する方法(Raspberry Pi)」で紹介しています。
参考資料
- Linux mintでYoutube Live配信するメモ – すずめの巣箱
- Raspberry Piで車載動画をYouTube配信 (第1回) – ひよこの設計図
- ffmpegでYouTube Liveストリーミングするために必要なオプションを調べたメモ – gan0803.dev
- FFMPEG で APPLE HTTP LIVE STREAMING(HLS)を扱う – ニコラボ
- FFMPEG で無限入力が可能に – ニコラボ
- FFMPEGで1枚の静止画から動画を作成する – 技術的特異点
- フォルダ内のファイルをランダムに10個コピーする – Qiita
- ffmpegでYouTube Liveに動画を配信する – yuta0801の脳内
- FFmpegで音声ファイルと画像1枚から動画を作成してみた – Developers IO
- 無音の音声ファイルを作成する方法 – 言うだけ言ってみる
ディスカッション
コメント一覧
まだ、コメントがありません