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パワーや、ハードウェアエンコードを使用する必要があります。
参考情報
関連記事
関連書籍(Amazon)