현재 Ubuntu Focal Fossa 20.04 LTS를 사용하고 있으며 FFmpeg 및 librav1e를 사용하여 고품질 AV1 파일을 만들고 싶습니다. 나는 ~에 자극을 받았다.덧셈FFmpeg에 대한 rav1e 지원은 'librav1e'입니다.
제가 작업하고 싶은 자료는 다음과 같습니다.
- 신텔 트레일러 영상(720p 비압축 1.7GB)
- 신텔 트레일러 오디오(플락 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 2
rav1e를 조작하면 상당히 속도가 향상될 수 있습니다.타일 기반 인코딩. 여기에 제공된 예는 인코딩을 분할합니다.그리고 디코딩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
.