VA-APIを使ってffmpegでエンコード

自分が使っているGPUがintel ARC A770 なので、まずはARC用のドライバをインストール。

#!/bin/bash

# IntelグラフィックスGPG公開キーをインストールする
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
  sudo gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg

# パッケージリポジトリを構成する
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | \
  sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list

sudo apt update -y

sudo apt install -y libze1 intel-level-zero-gpu intel-opencl-icd clinfo libze-dev intel-ocloc intel-level-zero-gpu-raytracing

sudo usermod -aG render $USER
sudo usermod -aG video $USER

続いてffmpegのビルドとインストール。

#!/bin/bash

#ffmpegのビルドに必要なライブラリのインストール-----------------------------------------

sudo apt -y update
sudo apt -y upgrade
sudo apt -y install yasm
sudo apt -y install nasm
sudo apt -y install cmake
sudo apt -y install git
sudo apt -y install pkg-config
sudo apt -y install libva-dev	#ビルドでVA-APIを有効化するのに必要
sudo apt install -y intel-media-va-driver-non-free #VA-APIでエンコードに必要


#ソフトウェアエンコードとAV1デコードに必要なライブラリのインストール--------------------------

sudo apt install -y libx264-dev
sudo apt install -y libx265-dev libnuma-dev
sudo apt install -y libdav1d-dev

#ffmpegのダウンロード、インストール-----------------------------------------------------------

cd ~
mkdir -p install
cd install
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg

./configure --enable-libx264 --enable-libx265 --enable-libdav1d --enable-gpl

sudo make -j$(nproc)
sudo make install

以下は例文です。

ffmpeg -vaapi_device /dev/dri/renderD128 -i input.mp4 -vf 'format=nv12,hwupload' -c:v av1_vaapi -b:v 3M -c:a copy output.mkv

「input.mp4」の部分はエンコードしたいファイル名。
「av1_vaapi」の部分は「hevc_vaapi」や「h264_vaapi」変えればエンコードの方法を変えることができます。

intelGPUならQSVがあるじゃないかというのは尤もです。
自分も普段はQSVを使っています。
ただ、こちらの方がインストールは簡単ですので一応紹介しました。

今回は以上です。

コメント

タイトルとURLをコピーしました