Raspberry PiでYouTubeによるライブ配信を行う!(音声なし)

Raspberry PiでYouTubeによるライブ配信を行ってみます。使用したのは、「Raspberry Pi 3 Model B+」です。

カメラを準備する!

Raspberry Piに、カメラモジュールを接続します。使用したカメラは、「LABISTS Raspberry Pi Camera B01」です。

ffmpegでYouTubeにエンコーダ配信する!(音声なし)

raspividコマンドでキャプチャーし、標準出力でffmpegコマンドに連携して、YouTubeにエンコーダ配信します。ソフトウェアによるエンコードでは、「Raspberry Pi 3 Model B+」では、720pの1280x768がCPUパワー的に限界になります。1080pを目標にしていたので、ハードウェアエンコード(h264_omx)を使用して、なんとか10fps出せることを確認しました。とりあえず音声なしです。

$ raspivid -w 1920 -h 1080 -fps 10 -o - -t 0 | \
ffmpeg -thread_queue_size 512 -f h264 -r 10 -i - \
-f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v h264_omx -c:a aac -g 20 -s 1920x1080 \
-f flv rtmp://a.rtmp.youtube.com/live2/<STREAM KEY>

ソフトウェアエンコードを行う場合は!

ソフトウェアエンコードを行う場合は、エンコーダに「libx264」を指定します。1080pでは、1fpsでればよいくらいのパフォーマンスになります。

$ raspivid -w 1920 -h 1080 -fps 10 -o - -t 0 | \
ffmpeg -thread_queue_size 512 -f h264 -r 10 -i - \
-f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v libx264 -c:a aac -g 20 -s 1920x1080 \
-f flv rtmp://a.rtmp.youtube.com/live2/<STREAM KEY>

「-thread_queue」オプションをチューニングする!

「-thread_queue」オプションの値が小さいと、CPUパワーがあっても動画配信が滞ります。デフォルトが「8」なので、警告メッセージが出なくなるまで、増やすようにしましょう。

音声なしを正しく設定する!

音声なしで配信する場合でも、音声なしであることを正しく設定しないとYouTube側での受信が開始されません。「lavfi」フィルターの設定と、コード変換の設定「aac」を必ず行います。

キーフレーム間隔(GOP)を正しく設定する!

キーフレーム間隔(GOP)を正しく設定します。YouTubeでは、GOPの値は、4秒以内で2秒が推奨です。ffmpegの「-g」オプションに、fpsの値の2倍の値を設定して推奨の2秒になるように設定します。

おわりに

Raspberry Piでライブ配信を試みましたが、高画質のライブ配信はCPUパワーや、ハードウェアエンコードを使用する必要があります。

参考