まずはdocker環境内のffmpegでSVT-AV1を使えるようにする。
debian.Dokcerfileのapt-get にlibsvtav1enc-dev(パッケージ名注意)を追加、ffmpegのビルドオプションに--enable-libsvtav1を追加
FROM l3tnun/epgstation:master-debian ENV DEV="make gcc git g++ automake curl wget autoconf build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev" ENV FFMPEG_VERSION=7.0 RUN apt-get update && \ apt-get -y install $DEV && \ apt-get -y install yasm libx264-dev libmp3lame-dev libopus-dev libvpx-dev libsvtav1enc-dev && \ apt-get -y install libx265-dev libnuma-dev && \ apt-get -y install libasound2 libass9 libvdpau1 libva-x11-2 libva-drm2 libxcb-shm0 libxcb-xfixes0 libxcb-shape0 libvorbisenc2 libtheora0 libaribb24-dev && \ \ #ffmpeg build mkdir /tmp/ffmpeg_sources && \ cd /tmp/ffmpeg_sources && \ curl -fsSL http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 | tar -xj --strip-components=1 && \ ./configure \ --prefix=/usr/local \ --disable-shared \ --pkg-config-flags=--static \ --enable-gpl \ --enable-libass \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libsvtav1 \ --enable-version3 \ --enable-libaribb24 \ --enable-nonfree \ --disable-debug \ --disable-doc \ && \ make -j$(nproc) && \ make install && \ \ # 不要なパッケージを削除 apt-get -y remove $DEV && \ apt-get autoremove -y && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /tmp/*
gitlab.com
よりコーデックが選べるenc.jsを拝借
const codecs = ['libsvtav1', 'libx264', 'libx265', 'h264_vaapi', 'hevc_vaapi']; 中略 // 各コーデック固有の設定 (async () => { const vaapiDeviceArgs = []; // -i input より前に挿入される引数 const useCodecArgs = []; // 指定コーデック固有の引数 // ソフトウェアエンコード(libx264, libx265) if (/libx/.test(useCodec)) { // ビデオフィルタ インターレス解除 useCodecArgs.push('-vf', 'yadif'); // 品質 useCodecArgs.push('-preset', 'veryfast', '-crf', '26'); } // libsvtav1エンコード if (/libsvtav1/.test(useCodec)) { useCodecArgs.push('-vf', 'yadif'); useCodecArgs.push('-preset', '6', '-crf', '35'); }
config.yml
encode: - name: SVT-AV1 cmd: '%NODE% %ROOT%/config/enc.js libsvtav1' suffix: .mp4 rate: 4.0 - name: H.264 cmd: '%NODE% %ROOT%/config/enc.js' suffix: .mp4 rate: 4.0
あとは
docker-compose down docker-compose build docker-compose up -d