如何使用 FFmpeg 和 rav1e 創建高品質的 AV1 檔案?

如何使用 FFmpeg 和 rav1e 創建高品質的 AV1 檔案?

我目前正在使用 Ubuntu Focal Fossa 20.04 LTS,我想使用 FFmpeg 和 librav1e 創建高品質的 AV1 檔案。我一直被添加rav1e 對 FFmpeg 的支援為「librav1e」。

我有興趣使用的材料如下:

  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”),然後執行以下命令來配置目前的 shell:

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-c小程式以及 FFmpeg 所需的函式庫和 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 是最快。這個特別的設定是我的系統(第二代 Threadripper)上速度和品質之間的一個很好的折衷。
  • -tile-columns 2 -tile-rows 2透過操縱 rav1e 可以實現相當不錯的速度增強基於圖塊的編碼。這裡給的例子分割了編碼和解碼分為 4 段,對於建議的輸入影片來說似乎是一個不錯的選擇,不過請隨意嘗試..

這種編碼速度是 FFmpeg 和 libaom-av1 的許多倍,可以說產生更好的品質。毫無疑問,這個編碼字串可以進一步細化,我將在 rav1e、FFmpeg 和 AV1 編碼成熟時這樣做...

5.無償截圖

好的,所以有一個可選的第五步;截取運行時已完成的輸出檔案的螢幕截圖:)

在此輸入影像描述

補充筆記...

  • FFmpeg 文件:有關使用 rav1e 進行編碼的 FFmpeg 實現的文檔,也可以透過搜尋 FFmpeg 手冊頁 或 來man ffmpeg-all查看man ffmpeg-codecs。請記住,可以使用以下選項查看本機 rav1e 選項rav1e --help並將其新增至任何 FFmpeg 命令列-rav1e-params...

相關內容