ffmpeg 4.0 から追加されたエンコーダ。AMF(Advanced Media Framework) SDK を使ったAMD の VCE(Video Coding Engine) を ffmpeg で使う方法。RX470 で試したところ、h264_amf のほうが、hevc_amf よりも VAMFスコアを見る限り高画質でエンコード速度は少し遅く、デコード速度が早くなる。hevc_amf で出力した動画は MPC-HC, VLC で見るととてもシークが遅い。そしてどちらも LAV Video decoder を使うとシーンチェンジ部分や、シーク直後ではビットレートが低いと映像がよく乱れるが、VLC では乱れない。

関連記事
ffmpeg に nvenc(cuda) をインストールする
qsv 対応の ffmpeg をつくる

hardware acceleration の Wiki:HWAccelIntro – FFmpeg

準備

エンコード例

libx264 などで使える、crf, minrate, maxrate は使えないので、b:v でビットレート指定、または qmin, qmax で品質の上下指定、qp_i, qp_p, qp_b で各フレームの品質指定をする。既定値は平均ビットレート 2000kb/s になっている。pass 指定はできないので2パスエンコードはできない。
ffmpeg -i input -vcodec h264_amf -quality quality -acodec copy output.mp4
ffmpeg -i input -vcodec hevc_amf -quality quality -acodec copy output.mkv

可逆圧縮例
ffmpeg -i input -vcodec h264_amf -qmin 0 -qmax 0 -acodec copy output.mp4

h264_amf のオプション

公式ドキュメント PDF:AMF_Video_Encode_API
ffmpeg -h encoder=h264_amf
品質オプションの、quality は 既定値の speed から balanced, quality の順番に画質がよくなる代わりに処理が遅くなる。rc cbr が既定値になっている。

hevc_amf のオプション

公式ドキュメント PDF:AMF_Video_Encode_HEVC_API
ffmpeg -h encoder=hevc_amf
品質オプションの、quality は 既定値の speedbalanced, quality は同じ品質の動画にエンコードされる。rc cbr が既定値になっている。

opencl フィルタを併用する

RX470 には opencl が使えるので、これを使ってフィルタを併用する。対応フィルタは opencl でブログ内検索する。ポイントは ocl のデバイスを指定し、フィルタ間で hwupload,hoge_opencl,hwdownload のように ocl フィルタを挟む。

ffmpeg -init_hw_device opencl=ocl:1.0 -filter_hw_device ocl -i input.mp4 -vf hwupload,avgblur_opencl,hwdownload,unsharp -vcodec h264_amf -acodec copy output.mp4

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)