あれこれ備忘録@はてなブログ

勉強したことやニュースや出来事を備忘録として書いていきます

このブログには広告が含まれます

FFmpegでハードウェアエンコードする。Vulkanは失敗したのでVA-APIにした

うちのノートパソコンはオンボードというかAMDCPUに統合されたGPUなのだが、ネットで調べてみるとVulkanに対応しているという。

しかし、FFmpegのエンコードオプションのhevc_vulkanはエラーが出て使えなかった。

仕方ないので、昔からあるVA-APIの方を使うことにした。

sweep3092.hatenablog.com

ちょっと情報が古いがミニPCということでAPU型のCPU,GPUだから条件が同じだろうということで上の記事を参考にした。

ffmpeg -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -i input.mp4 -vf 'hwupload' -c:v hevc_vaapi -b:v 1M -qp 35 -c:a aac output.mp4

としてみた。

それほど画質は求めていないし、元の動画も720pなのでこれでいいかと思う。

これで試してみたところ、2時間の720p,H.264の動画が4分30秒ほどでH.265に変換できた。

これまではCPUでのエンコードで1時間弱くらいかかっていたから大幅な高速化だ。

若干、CPUのエンコードよりも画質が悪いような気がするがそこは気にしない。

それなりの画質でファイルサイズが小さくなれば個人的には満足。

なお、FFmpegは一応、最新のものにしている。

arekorebibouroku.hateblo.jp

PCを買い替えたり、クリーンインストールして、環境が変わったときのために記録しておく。

コマンドオプションはこうした方が良いというアドバイスがあれば、コメントなどを残してほしい。

その都度、追記する。