Ubuntu Bionic Beaver 18.04 LTSを使用していますが、FFmpegとlibrav1eを使用して高品質のAV1ファイルを作成したいと考えています。 librav1eとしてのFFmpegへのrav1eサポートの 最近の追加 に拍車をかけられました。
私が使用したい資料はここにあります:
まだ多くのドキュメントと公開された実験が行われていないFFmpegの下でのrav1eサポートの非常に初期(2019年11月)です。 Ubuntu LTSリリースですべてが機能するのを見るのは素晴らしいことです!
この目標は4比較的簡単なステップで達成できるようです。そのため、Bionic Beaver 18.04 LTSは、FFmpegとrav1eを使用したAV1エンコーディングに対応できます。
1。 Rustの最新のコピーを入手...
Bionic BeaverのコピーはRustつまり古すぎます)なので、次のように新しいコピーを取得します。
Sudo apt-get install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
デフォルトに従い(「Enter」を押すだけ)、次に実行します。
source ~/.profile
最新のRustや友達への即時アクセスを許可します。
2。 rav1eをインストールします
実行可能ファイル(rav1e --fullhelp
コマンドは-rav1e-params
オプションを使用してFFmpeg内から使用できるオプションを表示します)と、FFmpegがlibrav1eを正常にコンパイルおよび生成するために使用するライブラリーの両方をインストールするのが最善です。
最初に、単純なコピーと貼り付けのコードブロックを使用して実行可能ファイルを作成します。
Sudo apt-get install nasm &&
mkdir -pv $HOME/{bin,ffmpeg_sources,ffmpeg_build} &&
cd $HOME/ffmpeg_sources &&
wget https://github.com/xiph/rav1e/archive/v0.3.1.tar.gz &&
tar xvf v0.3.1.tar.gz && cd rav1e-0.3.1 &&
cargo build --release &&
find target -name rav1e -exec install -m 755 {} $HOME/bin \; &&
strip ~/bin/rav1e
次に、cargo-c
アプレット、およびFFmpegに必要なライブラリとpkg-configファイルをインストールします。最初にone-offコマンドを実行してcargo-c
をインストールします。
cargo install cargo-c
次に、インストールされているcargo-c
を使用してrav1eを再度コンパイルします。
cd $HOME/ffmpeg_sources/rav1e-0.3.1 &&
cargo cinstall --release \
--prefix=$HOME/ffmpeg_build \
--libdir=$HOME/ffmpeg_build/lib \
--includedir=$HOME/ffmpeg_build/include
次に、rav1e共有ライブラリを削除し、FFmpegが取得する静的ライブラリを残しておくのが最善です。
rm -v $HOME/ffmpeg_build/lib/librav1e.so*
3。 FFmpegをインストールする
次に FFmpeg tracサイト に移動し、指示に従って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 2
rav1eの タイルベースのエンコーディング を操作することで、かなりまともな速度の向上を実現できます。ここに示した例では、エンコーディングとデコーディングを4つのセグメントに分割し、提案された入力ビデオに適切な選択のように思われますが、自由に試してみてください。これは、FFmpegとlibaom-av1で見られる速度を何度もエンコードし、間違いなくはるかに優れた品質を生み出します。間違いなく、このエンコード文字列はさらに洗練されている可能性があり、私はこれをrav1e、FFmpegおよびAV1エンコード成熟として実行します...
5。不必要なスクリーンショット
OK、オプションの5番目のステップがあります。実行中の完成した出力ファイルのスクリーンショットを撮ります:)
追記...
エンコード時間:av1へのエンコードは悪名高く遅く、初期の頃は予期されていませんでした。提案されたコマンドラインの前にコマンドtime
を追加することにより、いくつかの興味深い統計を生成できます。
FFmpeg + rav1e 0.3.1 FFmpeg + rav1e 0.2.1 FFmpeg + rav1e 0.2.0
real 10m50.144s real 15m22.059s real 14m22.045s
user 42m20.816s user 50m40.257s user 48m32.285s
sys 2m5.363s sys 0m52.360s sys 0m49.788s
これは、ビデオエンコーディング用に特別に構築された第2世代のThreadripperコンピュータ上にあり、独自の数値は間違いなく異なります...
FFmpegドキュメント:rav1eを使用したエンコーディングのFFmpeg実装に関するドキュメント。これは、FFmpegのマニュアルページを検索することでも確認できます。 、man ffmpeg-all
またはman ffmpeg-codecs
。ネイティブのrav1eオプションはrav1e --help
で確認でき、-rav1e-params
オプションを使用してFFmpegコマンドラインに追加できます...
FFmpegとBlenderのショートムービー「Sintel」...:AV1エンコーディングだけでなくSintelトレーラーを使用する自分のページVP9、Theora、GPU H.264エンコーディングでのエンコーディングにも使用できます。エンコーディングの知識を拡張したい場合、または単にSintelをもう少しだけ試してみたい場合に興味深い...