7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

M1 macでハードウェアエンコードする

動機

M1チップのMBAを買ったので、ハードウェアエンコードとソフトウェアエンコードを比較します。
厳密にはトランスコードですが、ここでは"エンコード"を使います。
macOSではvideotoolboxを通して、vaapiなどのハードウェアエンコードが利用出来るようです。
M1チップでも同様で、脳死でvideotoolboxを使えばハードウェアエンコードできるようです。

環境

MacBook Air (M1, 2020) 8コアGPU
ffmpeg (https://ffmpeg.org/download.html#build-mac) はこちらのものを使いました。

ffmpeg version N-100466-g29cef1bcd6-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2020 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      56. 62.100 / 56. 62.100
  libavcodec     58.115.102 / 58.115.102
  libavformat    58. 65.100 / 58. 65.100
  libavdevice    58. 11.103 / 58. 11.103
  libavfilter     7. 94.100 /  7. 94.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
Hyper fast Audio and Video encoder

対応フォーマット

user@h94 ~ % ffmpeg -encoders | grep VideoTool   

 V..... h264_videotoolbox    VideoToolbox H.264 Encoder (codec h264)
 V..... hevc_videotoolbox    VideoToolbox H.265 Encoder (codec hevc)

h264とhevcが利用可能なようです。

エンコード時間の比較

適当な地デジの録画ファイルを変換してみます。

元の動画
Stream #0:1[0x111]: Video: mpeg2video (Main), yuv420p(tv, bt709, top first), 1440x1080 [SAR 4:3 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc, 13Mbps
Stream #0:2[0x112]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 189 kb/s
実行例
user@h94 ~ % ffmpeg -i {input} -c:v {エンコーダ} -b:v 6M {output}
エンコーダ 実時間比(Large is better)
libx264 1.43
libx265 0.63
h264_videotoolbox 8.27
hevc_videotoolbox 8.25

まとめ

思ってたより早い。
画質はそんなに良くないけど、録画したファイルをテレビで見るには十分な画質という感じ。
h264とhevcが同じ速度なので、もっと最適な条件はありそう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
7
Help us understand the problem. What are the problem?