min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Pi3(Pi4)の h264_omx でts動画をmp4にハードウェアエンコード爆速(HandBrakeCLIより速い) ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

 

結論

ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

でPiのomxplayerの?ハードウェアエンコード h264_omxを使った高速ts→mp4変換ができた。オプションとして-b:v 4M を指定すると高画質になる。

 

経緯

ffmpegでrecfsusbのTV画像をパイプしてhttpなりで配信できないか?を調べてたら、ラズパイのffmpegでハードウェアエンコードできる感じの記事。

denor.jp

recfsusb2n が認識しているdeviceは /dev/bus/usb/001/004 だったから

それを v4l2-ctl コマンドに食わせると

$ v4l2-ctl -d /dev/bus/usb/001/004

バイスの認識はダメみたいけど、ffmpegエンコードには別に関係ないか。

 

これ。h264_omx オプションでラズパイの omxplayerで?ハードウェアエンコード?できるっぽい。

ts録画して…

こうか?

$ ffmpeg -i test4.ts -c:v h264_omx -y test4omx.mp4

なんかエラーだな…

変換前がコレで

変換後がこう。変換自体はできてる!

tsがmp4に(すごい速度で)変換できた。HandBrakeCLIより速い?高解像度化のオプションないか調べる。

 

signal-flag-z.blogspot.com

-b:vオプションで高解像度化できる!

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 1000k test4omx2.mp4

だいぶマシになった!

HD映像(ハイビジョン?)の時は -b:vに4m を指定せよとある。

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx3.mp4

こりゃ素晴らしい。

サイズは15MB→4MBだから約4分の1になる。

 

母艦fedoraのHandBrakeCLIで同じこと(ts→mp4)してみよう。手元でいつもやってるやつだ。

$ HandBrakeCLI -i test4.ts -o test4omx4HBCLI.mp4 -Z "Apple 1080p30 Surround"

体感だとffmpegomxハードウェアエンコード)に比べて倍の時間かかってる気がする。

さすがにHandBrakeは画質キレイ?いや、そんな違わんでしょ。

これでサイズもffmpeg(h264_omxエンコード)のほうが小さい!

てことは、ffmpeg(h264_omxエンコード)を使えば

・ラズパイの筐体で(電力消費が極小)

・HandBrakeCLIよりも速く

エンコード後サイズも小さく

できる!素晴らしすぎる。

 

てことは、普段はVPNサーバにしてて、GPUを持て余してるラズパイ4でも同じことffmpeg(h264_omxエンコード)できるのか!?

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

できちゃった!画質もバッチリ。

上がffmpeg。下はHandBrakeCLI。見た目違い分からんくらいキレイ。これで日々撮り溜めたニュース.tsのエンコードが倍速になる。

 

試しに昨日のニュース.ts(286MB)をエンコードさせてみる。

ちょっとエラー吐くが無視。

実測の1.4倍で変換できてる!?らしい。こりゃ捗る。

わずか2分で286MBのエンコードが終了!

画質ばっちり。サイズも元の半分近くに圧縮された。

 

これで一括変換できるわ。

変換開始。一気に温度上がった。

70度超えはちょっと厳しいか。


ちなみに同じh264_omxエンコードでも、V4L2M2Mエンコードは動かんかった。

forums.raspberrypi.com

qiita.com


あとはtsに乗ってくる犬Hの副音声が邪魔。どうやって除去するか調べる。

https://memo.brdr.jp/post/107390084331/ffmpeg

memo.brdr.jp