Atualmente estou usando Ubuntu Focal Fossa 20.04 LTS e gostaria de criar arquivos AV1 de alta qualidade usando FFmpeg e librav1e. Fui estimulado peloAdiçãodo suporte rav1e ao FFmpeg como 'librav1e'.
O material com o qual tenho interesse em trabalhar é fornecido aqui:
- Vídeo do trailer de Sintel(720p não compactado 1,7 GB)
- Áudio do trailer Sintel(flac 5MB)
Ainda é cedo para o suporte rav1e no FFmpeg, sem muita documentação e experimentação publicada. Seria ótimo ver tudo funcionando em uma versão Ubuntu LTS!
Responder1
Parece que esse objetivo pode ser alcançado em 4relativamente fáciletapas, permitindo assim que o Ubuntu Focal Fossa 20.04 LTS se familiarize com a codificação AV1 com FFmpeg e rav1e!
1. Obtenha uma cópia recente do Rust...
Focal Fossa e rav1e se beneficiam de uma versão mais recente do Rust, então pegue uma cópia mais recente da seguinte maneira:
sudo apt-get install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Siga os padrões (basta pressionar 'enter') e execute o seguinte para configurar seu shell atual:
source $HOME/.cargo/env
para permitir acesso instantâneo aos mais novos amigos e ferrugem. Lembre-se de atualizar esta instalação de tempos em tempos (especialmente se estiver atualizando o rav1e deste guia) executando:
rustup update
2. Instale rav1e
É melhor instalar o executável (o comando rav1e --fullhelp
mostrará opções que podem ser usadas no FFmpeg com a -rav1e-params
opção), bem como as bibliotecas que o FFmpeg usará para compilar e produzir librav1e com sucesso.
Primeiro o executável, usando um simples bloco de código de copiar e colar:
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
Em seguida, instale o cargo-c
miniaplicativo, bem como as bibliotecas e o arquivo pkg-config necessários ao FFmpeg. Primeiro execute umúnicocomando para instalar cargo-c
:
cargo install cargo-c
e então compile rav1ede novousando o instalado 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
Melhor então remover o rav1ebibliotecas compartilhadas, Deixe obibliotecas estáticaspara o FFmpeg pegar (o FFmpeg tem um problema com as bibliotecas rav1e compartilhadasneste localno meu sistema):
rm -v $HOME/ffmpeg_build/lib/librav1e.so*
3. Instale o FFmpeg
Agora vá parao site de rastreamento do FFmpege instale o FFmpeg conforme as instruções, lembrando de adicionar:
--enable-librav1e
para a ./configure
corda. Então o trabalho duro está feito :)
4. Execute o codificador
Uma codificação bastante razoável pode então ser executada nos arquivos de teste mencionados na pergunta original:
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
Coisas para manipular aqui seriam:
-qp 80
: Usa o modo 'quantizador' para codificar com um intervalo de 0 a 255. Valores menores têm qualidade mais alta, o padrão é 100. 80 parece ser o ponto ideal para este clipe de mídia.-speed 4
: Seleciona a predefinição de velocidade (0-10) para codificação, 0 é a melhor qualidade enquanto 10 é a mais rápida. Esta configuração específica é um bom compromisso entre velocidade e qualidade no meu sistema (Threadripper de 2ª geração).-tile-columns 2 -tile-rows 2
Melhorias de velocidade bastante decentes podem ser feitas manipulando o rav1ecodificação baseada em bloco. O exemplo dado aqui divide a codificaçãoe decodificaçãoem 4 segmentos e parece uma escolha decente para o vídeo de entrada sugerido, mas sinta-se à vontade para experimentar.
Isso codifica muitas vezes a velocidade vista com FFmpeg e libaom-av1 e sem dúvida produz uma qualidade muito melhor. Sem dúvida, esta string de codificação pode ser ainda mais refinada e farei isso quando a codificação rav1e, FFmpeg e AV1 amadurecer ...
5. Captura de tela gratuita
OK, então há uma quinta etapa opcional; tirando uma captura de tela do arquivo de saída concluído em execução :)
Notas Adicionais...
- Documentação FFmpeg: Os documentos sobre a implementação da codificação do FFmpeg com rav1e, isso também pode ser visto pesquisando nas páginas de manual do FFmpeg,
man ffmpeg-all
ouman ffmpeg-codecs
. Lembre-se de que as opções nativas do rav1e podem ser vistasrav1e --help
e adicionadas a qualquer linha de comando do FFmpeg usando a-rav1e-params
opção...