M1 Mac対応のFFmpegのインストール(FF・Works編)方法の説明と変換速度の差を比較。
まずはM1 Mac対応のFFmpegのインストール(FF・Works編)方法の説明からスタート。
弊社ではFFmpegのフロントエンドで「FF・Works」を利用している。動画を720pのmpeg4とかに変換してクライアントに送付したり作成した動画(Apple ProRes コーデック)を各種フォーマットに変更するのに使ってる。
時々デジタルサイネージの動画用にWMV形式での入稿等もあり、そういうときはFFmpegさんを利用するほか無い。
また、複数の動画を一気に変換する際などは重宝するアプリである。
早い時期から「FF・Works」はM1にネイティブ対応したのだが、変換してみるとなぜか遅い。
上記のように「FF・Works」はApple(Appleと表示されているのがM1ネイティブアプリでIntelがRosetta2でエミュレーションで動作)でネイティブ動作しているのだが肝心の「FFmpeg」はIntel(一番上)のままだったことに気がついた。
そもそも「FF・Works」がフロントエンドでなどといっても、わかってない方には何の話?となるだろうから少し「FFmpeg」についてお話をしようと思う(詳しくはWiki参照)。
FFmpegは動画と音声を記録・変換・再生するためのフリーソフトウェアで動画再生ソフトのVLCなんかもこの技術を使っています。もちろん「FF・Works」もそうなのだが、そのホームページ説明があるので見てみよう(上はそのHPのスクショ・下はその抜粋翻訳)。
「ff-Works は FFmpeg のフロントエンドとしても動作しますので、FFmpeg バイナリが必要です。このバイナリがないと、いくつかの ff-Works の機能は何もできません。また、FF-Worksのライセンスは、FFmpegが使用するコーデックやフォーマットのライセンスにはならないことに注意してください。動作するFFmpegのバイナリを手に入れるには、一般的な方法があります。」
つまりは「FF・Works」は操作を手助けするアプリでそのコア(バイナリ)となるものはネットで検索して探してインストールしてねと書いてある。そのリンクのひとつをクリックすると。
Apple Silicon向けのFFmpeg 4.4というのが配布されている。とりあえずクリックして早速ダウンロード。ダウンロードしたファイルは36.8MBのプログラムだ。
私も実は「FF・Works」でバイナリ(コアのFFmpeg)を入れ替える方法を知らなかったので少し苦労をしたが、やり方が分かれば簡単。通常動画をドラッグアンドドロップでアプリに入れるのと同様に画面の「Import Media」の場所にドラッグアンドドロップすればよい。
「Use」と「Use and Copy to Application Support/FFmpegTools folder」との二択なのだが青色のを選んでおけばOK!
「Use」を選ぶとその場所からファイルを移動できなくなるので、アプリの指定フォルダにコピーして移動してもらうのがよいでしょう。
その後、下記のように上書きしますか?とのコメントが出るので「Overwrite」を選んでください。
以上で「FFmpeg」入れ替え作業は終了です。
Rosetta2(Intel App)エミュレーションモードとM1(Apple App)ネイティブはどのぐらい動画の変換速度が違うのか?また、Macbook Pro(15inch 2018 i9 eGPU RX560/Radeon Vega 20)との差の実験を開始。
なかなかM1ネイティブとRosetta2で動作する同じアプリでの比較は難しかったのだが、CPUの負荷がもっとも明確にでるFFmpegの動画変換で比較ができるのは面白い機会と思い実験をしてみることとに。ついでにMacBook Pro (15inch 2018 i9 eGPU RX560/Radeon Vega 20)も参戦させてみた。
フルHD(1920 × 1080)H264(mp4)ファイル68.8M(01:39)の動画ファイルをH265(mp4)に変換。
M1ネイティブMacはRosetta2よりは1.5倍速い。Intel MacBook proとM1 MacMiniが1.48倍Intel MacBookProの方が速い。Intel MacBook proはRosetta2より2.42倍速いという結果となった。
4K(3840 × 2160)H264(mp4)ファイル185.3M(04:16)の動画ファイルをH265(mp4)に変換。
M1ネイティブMacはRosetta2よりは1.8倍速い。Intel MacBook proとM1 MacMiniが1.54倍Intel MacBookProの方が速い。Intel MacBook proはRosetta2より2.8倍速いという結果となった。
ファイル容量の多い4Kの方がその差が顕著に表れる結果となった。
また、下記のメモリ消費を見てもらえればわかると思うが上がM1ネイティブでのFFmpegのメモリ消費量で下がRosetta2動作時のメモリ消費量である。M1が496MBであるのに対してRosetta2は1.65Gと3倍以上もメモリ消費に差がある。
また、メモリ消費がこの程度であるということは16GBのM1 Macだとしても差はあまりないではないだろうか?
思った以上にIntel搭載のMacBookProが圧倒的なことに驚いた。
GeekBnechのマルチコアではMacBook Pro 2018(Intel Core i9-8950HK @ 2.9 GHz)が4960。M1 MacMini(Apple M1 @ 3.2 GHz)が7417。
この単純計算でいけば1.5倍程度M1 MacMini(Apple M1 @ 3.2 GHz)の方が速いはずだ。
なのでFFmpegのM1最適化がまだ完全ではないのでしょうね。FFmpegがアップデートされたらまた、実験してみます。