kazeno memo

メモとか

Linuxでアニメのエンコード

HDDの容量が少なくなってきたので、アニメをH.265(HEVC)で圧縮したい!

プロファイル

動画

  • H.265
  • 1280x720

古いデバイスばかり使っているので、H.265は若干重い(CPU使用率が目に見えて上がる)のですが、容量とのトレードオフということです。

音声

オーディオまわりには全く拘りがありません。1MBのFLACと200KBのAACであれば後者以外の選択肢はありえません(そもそも、音質を聞き分けられるオーディオ機器持っていません)。

AACエンコードライブラリは、FDK-AACAppleのCoreAudio(qaac)の二強らしい。品質はApple (QAAC) ≒ fdk-aac > nero ≒ ffmpegとのこと。

FDK-AACは、--enable-libfdk-aacフラグを付けてffmpegをビルドする必要がある。

qaacはWindows用ソフトウェアだし、必要なDLLはiTunesに含まれている。つまりLinuxでは動かすことができないが、Wineを使えばどうにかなる。

ffmpegのビルド

libx264、libx265、libfdk-aacを有効にしたffmpegをビルドする。AV1やVP9などのライブラリが必要な場合は適宜追加してください。

まずソースコードをダウンロードし、GnuPGで検証します。

// ffmpeg本体と署名をダウンロード
$ wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.gz{,asc}

// 公開鍵をインポート
$ curl -s https://ffmpeg.org/ffmpeg-devel.asc | gpg --import -

// 検証
$ gpg --verify ffmpeg-4.4.tar.gz.asc

// 展開
$ tar xf ffmpeg-4.4.tar.gz

必要なパッケージをインストールします。(公式ドキュメントには無いlibunistring-devが必要でした)

# apt install -y \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libtool \
  libvorbis-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev \
  nasm \
  libx264-dev libx265-dev libnuma-dev libfdk-aac-dev libmp3lame-dev libopus-dev \
  libunistring-dev

ビルドします。

$ cd ./ffmpeg-4.4
$ ./configure \
  --pkg-config-flags="--static" \
  --extra-libs="-lpthread -lm" \
  --ld="g++" \
  --enable-gpl \
  --enable-gnutls \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree

// コンパイル
$ make -j$(nproc)

// インストール(/usr/local/binにffmpegなどがコピーされるので注意)
$ make install

qaac

FLACをm4a(aac)へ

動画をH265・1280x720へエンコード