Memo: M1 MacBook Air で ffmpegの H265ソフトウェアエンコードが遅いので改善してみました。

MacBookAirはApple Silicon のCPUを採用して飛躍的に性能向上しているのは事実だけど、未だにソフトがApple Siliconに対応していないので、その性能を引き出せていないことがあります。

ffmpegのvideotoolboxのエンコードは、AppleSiliconの恩恵もあってそれなりの性能になるのだが画質やデータ量が今一つです。しかたがないのでH265のソフトエンコードを行うことにしていますが、Intel Macに比べてもとにかく遅いです。。

原因は、homebrewのx265がARMのNEON拡張やAppleSiliconに最適化されていないことのようです。

噂を頼りにWebを探してみると
x265_gitのコミットリストの「Liwei Wang committed 4bf31dc」に
Contributed by Apple under MIT license
となっていてAppleが提供したコードがmasterに反映されているらしいです。

ということで、

https://bitbucket.org/multicoreware/x265_git.git

ダウンロードにあるzipファイルは作成されたのが古く最適化が組み込まれていないのでmasterからcloneでソースを入手して組み込んで簡単に評価てみました。

評価は4K 60Mb/s h264 の動画を下記のコマンドでh265に変換しました。
ffmpeg -i src.mp4   -c:v libx265 -o out.mp4

結果1:homebrew標準のx265の場合
encoded 562 frames in 170.22s (3.30 fps), 4309.37 kb/s, Avg QP:34.09

結果2:x265_gitから入手したソースの場合
encoded 562 frames in 68.44s (8.21 fps), 4309.37 kb/s, Avg QP:34.09
ということで確かに2.5倍はエンコードが早くなりました。

結果3:MacMini2018 core i7では
encoded 562 frames in 62.65s (8.97 fps), 4309.37 kb/s, Avg QP:34.09

速くなったと言っても、MacMini2018 core i7 より若干遅く、高性能を謳うAppleSiliconとしてはまだ最適化が不足なのではと思いますが、自分で最適化できる能力はないので、ありがたく使わせていただきます。

わざわざ、ソフトエンコードするといったニッチな使い方ですのでWebにも情報が少ないようです。ffmpegのlibx265の高速化について良い情報があれば教示のほどお願いします。



いいなと思ったら応援しよう!