FFmpeg と rav1e を使用して高品質の AV1 ファイルを作成するにはどうすればよいですか?

FFmpeg と rav1e を使用して高品質の AV1 ファイルを作成するにはどうすればよいですか?

私は現在Ubuntu Focal Fossa 20.04 LTSを使用しており、FFmpegとlibrav1eを使用して高品質のAV1ファイルを作成したいと考えています。追加rav1e サポートを 'librav1e' として FFmpeg に追加します。

私が取り組みたいと考えている資料はここにあります:

  1. シンテルの予告編動画(720p 非圧縮 1.7GB)
  2. シンテルトレーラーオーディオ(flac 5MB)

FFmpeg での rav1e サポートはまだ初期段階であり、ドキュメントや公開された実験もあまりありません。Ubuntu LTS リリースですべてが機能するのを見るのは素晴らしいことです。

答え1

この目標は4で達成できそうだ比較的簡単手順により、Ubuntu Focal Fossa 20.04 LTS は FFmpeg と rav1e を使用した AV1 エンコーディングを理解できるようになります。

1. 最新の Rust のコピーを入手します...

Focal Fossa と rav1e は新しいバージョンの rust の恩恵を受けるので、次のようにして新しいコピーを入手してください。

sudo apt-get install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

デフォルトに従い(「Enter」を押すだけ)、次のコマンドを実行して現在のシェルを構成します。

source $HOME/.cargo/env

最新の Rust とその仲間にすぐにアクセスできるようにします。このインストールを定期的に更新することを忘れないでください (特にこのガイドから rav1e を更新する場合)。次のコマンドを実行します。

rustup update

2. rav1eをインストールする

実行可能ファイル (コマンドはrav1e --fullhelp、オプションを使用して FFmpeg 内から使用できるオプションを表示します-rav1e-params) と、FFmpeg が librav1e を正常にコンパイルして生成するために使用するライブラリの両方をインストールするのが最適です。

まず、実行可能ファイルを作成します。単純なコピー アンド ペースト コード ブロックを使用します。

sudo apt-get install nasm build-essential pkg-config libssl-dev && 
mkdir -pv $HOME/{bin,ffmpeg_sources,ffmpeg_build} && 
cd $HOME/ffmpeg_sources && 
wget https://github.com/xiph/rav1e/archive/refs/tags/v0.6.3.tar.gz && 
tar xvf v0.6.3.tar.gz && cd rav1e-0.6.3 && 
cargo build --release && 
find target -name rav1e -exec install -m 755 {} $HOME/bin \; && 
strip ~/bin/rav1e && \
cd $HOME/ffmpeg_sources && rm -rfv rav1e-0.6.3

次に、cargo-cFFmpegに必要なアプレットとライブラリ、pkg-configファイルをインストールします。まず、一回限りのインストールするコマンドcargo-c:

cargo install cargo-c

そしてrav1eをコンパイルするまたインストールしたものを使用するcargo-c:

cd $HOME/ffmpeg_sources && tar xvf v0.6.3.tar.gz && \
cd rav1e-0.6.3 && \
cargo cinstall --release \
     --prefix=$HOME/ffmpeg_build \
     --libdir=$HOME/ffmpeg_build/lib \
     --includedir=$HOME/ffmpeg_build/include

その後rav1eを削除するのが最善です共有ライブラリ、残して静的ライブラリFFmpegが拾うために(FFmpegは共有rav1eライブラリに問題がある)この場所で私のシステムでは):

rm -v $HOME/ffmpeg_build/lib/librav1e.so*

3. FFmpegをインストールする

今すぐFFmpeg トラックサイト指示に従って FFmpeg をインストールし、以下を追加することを忘れないでください:

--enable-librav1e

文字列に./configure。これで大変な作業は終わりです :)

4. エンコーダーを実行する

その後、元の質問で言及されたテスト ファイルに対して、非常に合理的なエンコードを実行できます。

ffmpeg -i sintel_trailer_2k_720p24.y4m -i sintel_trailer-audio.flac \
       -c:v librav1e -qp 80 -speed 4 \
       -tile-columns 2 -tile-rows 2 \
       -c:a libfdk_aac -b:a 128k \
       sintel_trailer_av1.mp4

ここで操作するものは次のとおりです。

  • -qp 80: 0 ~ 255 の範囲でエンコードするために「量子化」モードを使用します。値が小さいほど品質が高くなり、デフォルトは 100 です。このメディア クリップの場合、80 が最適なようです。
  • -speed 4: エンコードに使用する速度プリセット (0 ~ 10) を選択します。0 は最高品質、10 は最速です。この特定の設定は、私のシステム (第 2 世代 Threadripper) での速度と品質の間の適切な妥協点です。
  • -tile-columns 2 -tile-rows 2rav1eを操作することで、かなりの速度向上が実現できます。タイルベースのエンコーディングここで示す例では、エンコードを分割しますおよびデコード4 つのセグメントに分割され、提案された入力ビデオとしては適切な選択のようですが、自由に実験してみてください。

これは、FFmpeg や libaom-av1 で見られる速度の何倍もの速度でエンコードされ、はるかに優れた品質を生み出すと言えます。このエンコード文字列は間違いなくさらに改良できるでしょう。rav1e、FFmpeg、および AV1 エンコードが成熟するにつれて、私はこれを実行するつもりです...

5. 不必要なスクリーンショット

さて、オプションの 5 番目のステップがあります。実行中の完了した出力ファイルのスクリーンショットを撮ります :)

ここに画像の説明を入力してください

その他の注意事項...

  • FFmpeg ドキュメント: rav1e を使用したエンコードの FFmpeg 実装に関するドキュメントは、またはman ffmpeg-allのいずれかで FFmpeg のマニュアル ページを検索することでも確認できますman ffmpeg-codecs。ネイティブの rav1e オプションは、オプションを使用して任意の FFmpeg コマンド ラインで確認rav1e --helpおよび追加できることを覚えておいてください-rav1e-params...

関連情報