FFmpeg 및 rav1e를 사용하여 고품질 AV1 파일을 생성하려면 어떻게 해야 합니까?

FFmpeg 및 rav1e를 사용하여 고품질 AV1 파일을 생성하려면 어떻게 해야 합니까?

현재 Ubuntu Focal Fossa 20.04 LTS를 사용하고 있으며 FFmpeg 및 librav1e를 사용하여 고품질 AV1 파일을 만들고 싶습니다. 나는 ~에 자극을 받았다.덧셈FFmpeg에 대한 rav1e 지원은 'librav1e'입니다.

제가 작업하고 싶은 자료는 다음과 같습니다.

  1. 신텔 트레일러 영상(720p 비압축 1.7GB)
  2. 신텔 트레일러 오디오(플락 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-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 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 2rav1e를 조작하면 상당히 속도가 향상될 수 있습니다.타일 ​​기반 인코딩. 여기에 제공된 예는 인코딩을 분할합니다.그리고 디코딩4개 세그먼트로 분할되었으며 제안된 입력 비디오에 적합한 선택인 것 같습니다. 그래도 자유롭게 실험해 보십시오.

이는 FFmpeg 및 libaom-av1에서 볼 수 있는 속도보다 여러 번 인코딩되며 훨씬 더 나은 품질을 생성합니다. 의심할 바 없이 이 인코딩 문자열은 더욱 개선될 수 있으며 rav1e, FFmpeg 및 AV1 인코딩이 성숙해지면 이 작업을 수행할 것입니다...

5. 무료 스크린샷

좋습니다. 선택적인 5번째 단계가 있습니다. 실행 중인 완료된 출력 파일의 스크린샷 찍기 :)

여기에 이미지 설명을 입력하세요

추가 참고사항...

  • FFmpeg 문서man ffmpeg-all: rav1e를 사용한 인코딩의 FFmpeg 구현에 대한 문서는 FFmpeg 매뉴얼 페이지( 또는 ) 를 검색하여 볼 수도 있습니다 man ffmpeg-codecs. 기본 rav1e 옵션은 다음 옵션을 rav1e --help사용하여 모든 FFmpeg 명령줄에서 확인하고 추가할 수 있다는 점을 기억하세요 -rav1e-params.

관련 정보