LoginSignup
5
10

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-28

動機

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が同じ速度なので、もっと最適な条件はありそう。

5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10