あかはば

ドローンやMacなどなど

Raspberry Pi 動画配信

30fpsと24fps 〜頑張れRaspberry Pi〜

更新日:

Raspberry Pi 4 2GBモデルを使ってffmpeg h264_omxのハードエンコードにてリアルタイムにトランスコード して配信中継しているわけですが、プロセス重複の問題もあり、nginx-rtmpからffmpegコマンドを実行するのではなく、外部にてffmpegを起動してストリームを読み込んでnginxに渡すという方法をとることにしています。

さて、Raspberry Piにsshにて接続したMacbook Proのターミナル画面を見ていますと、何やらエラーらしきものがズラズラ出て参ります。

30fps / h264_omx でエンコード

参照画像が失われているとか色々・・・・

ネットで調べてみますと、これはコマ落ちというかパケット落ちのような状態で、どうやらRaspberry Piの処理が追いついていない様子です。

確かにspeedの項目も0.958など1を下回った数値となっています。1x以上がリアルタイムに処理できているという数値ですので、1を下回るということはリアルタイムに処理ができてないということになります。

今度はフレームレートを30fpsから24fpsに下げて試してみましょう。

24fps / h264_omx でエンコード

Speedは1.02と1を上回っています。

特に問題なさそうです。

前のイベントログが残っています。ご承知おきください。

ソフトエンコードでやってみるとどんな感じでしょうか?

30fps / libx264 でエンコード

あれ?speedが1を上回っていますね。しかし、、、

動画のビットレートが上がらず、フレームレートが低いと叱られます。

24fpsでも試してみましょう。

24fps / libx264 でエンコード

Speedは1.06と1を上回っています。が、、、

映像のフレームレートが低いと叱られます。

まとめるとこんな感じです。

h264_omx libx264
30fps コマ落ち/パケットロス フレームレートが低いと叱られる
24fps フレームレートが低いと叱られる

Raspberry Pi 4 2GBモデルでリアルタイムにトランスコード して配信中継するには、24fpsでh264_omxのハードエンコードするのがベストという結論になりました。

もしかしたらffmpegのオプションでこの辺りの問題が解決するのかもしれません。詳しい方ぜひご教示ください。以下に使っているffmpegコマンドを以下に示します。

/usr/bin/ffmpeg -i rtmp://localhost:1935/multi/test -c:v h264_omx -vb 6000k -vf scale=-1:720 -acodec copy -f flv rtmp://localhost:1935/live/test;

-Raspberry Pi, 動画配信
-

Copyright© あかはば , 2020 All Rights Reserved Powered by STINGER.