この前記事にしたように、ROCK 5B (RK3588 SOC)のhwエンコーダ・デコーダを試すことのできる
エンコーダを作ってみた。
その後、いろいろフィードバックをいただいたり、いろいろ調べてコードを修正した結果、明らかに問題のあったところは、ひととおりなおすことができた。まあ、まだいろいろ問題はあるかもだけど、一区切りということで、rkmppenc 0.00として公開。
手元で試しているのはROCK 5Bだけど、ROCK 5B以外の、その他のOrange Pi、Nano Pi、Radxa ROCKシリーズ等のRockchip系SoCでもたぶん動くはず。
rkmppenc 0.00
Orange Pi、Nano Pi、Radxa ROCKシリーズ等のSBCに使用されているRockchip系SoC内蔵のHWエンコーダ (rkmpp) を使用するエンコーダです。
概要は
こちらに記載しています。
手元ではRadxa ROCK 5BのRK3588 SoCでテストしています。
下記に対応していて、RK3588の映像処理の多くの機能を利用可能で、CPUになるべく負荷をかけず、高速に処理することができます。もちろん、hwで処理できないものについては、sw処理を行うことも可能です。
hwエンコード | mpp: H.264/HEVC |
---|
hwデコード | mpp: H.264/HEVC/MPEG2/VP9/AV1 |
---|
hwリサイズ | rga |
---|
hwインタレ解除 | iepv2 |
---|
GPUフィルタ | OpenCL |
---|
Radxa ROCK 5B の HDMI In の活用
Radxa ROCK 5B (RK3588) HDMI In は、ffmpeg 6.0 時点ではサポートされない v4l2 multi-planar API を使用するとともに、いくつかのv4l2の呼び出しに応答しないため、通常ffmpegでキャプチャすることができません。
rkmppencでは、
v4l2 multi-planar APIへの対応と、v4l2の呼び出し関連のエラー回避を行ったffmpegを使用しているため、HDMI Inのキャプチャに対応していて、下記のようにしてキャプチャすることができます。
rkmppenc --input-format v4l2 -i /dev/video0 --input-option channel:0 --input-option ignore_input_error:1 --input-option ts:abs --audio-source "hw:
:format=alsa,codec=aac;enc_prm=aac_coder=twoloop;bitrate=192" -o out.ts

想定動作環境
Linux
Debian/Ubuntu系
その他の環境でも動くかもですが、動かなくて相談されても困ってしまうかもです…
注意事項
無保証です。自己責任で使用してください。
rkmppencを使用したことによる、いかなる損害・トラブルについても責任を負いません。
インストール方法とダウンロード先
→ インストール方法
→ ダウンロード