ffmpeg は CPU 使用率の高い rtsp を v4l2loopback にデコードします。

ffmpeg は CPU 使用率の高い rtsp を v4l2loopback にデコードします。

私はh264、hevc、その他のフォーマット用のハードウェアデコーダを備えたOrangepi5を持っています。私はarmibian Armbian 23.5.5 Jammy CLIカーネルレガシー5.10.160を使用しています。カスタムをインストールしました。RockChip MPPを使用したffmpegこれにより、これらのデコーダが有効になります。

これらのハードウェアデコーダを使用してループバックデバイスを作成しようとしています/dev/video0。たとえば、次のコマンドを使用します。

ffmpeg -rtsp_transport tcp -y -c:v  h264_rkmpp_decoder -re -i rtsp://admin:passwd@ipcam-front-up:554/stream=0 -c:v rawvideo -pix_fmt yuv420p -f v4l2  /dev/video0 

効果がある しかし、見てみると、htopプロセスグループ番号でそれを生成した基本スレッド/プロセスに加えて、12個のプロセス/スレッドがあります。平均CPU使用量の約7%

何もトランスコーディングしない場合、なぜですか?たとえば、次を使用すると、次のような結果のみが得られます。平均CPU使用率の1%です。

ffmpeg -rtsp_transport tcp -y -c:v  h264_rkmpp_decoder -i rtsp://admin:passwd@ipcam-front-up:554/stream=0 -f null -

なぜ-f v4l2そんなに多くのオーバーヘッドがありますか?それとも私が何か間違っているのでしょうか?他のソフトウェアでストリームを使用できるようにしたいです(スポーツ) ハードウェアデコーダは直接使用できません。

関連情報