O codificador AV1 mais rápido e seguro.
rav1e é um codificador de vídeo AV1. Ele foi projetado para eventualmente cobrir todos os casos de uso, embora em sua forma atual seja mais adequado para casos em que o libaom (o codificador de referência) é muito lento.
Encontre a documentação em doc/
Num futuro próximo, um pré-lançamento semanal do rav1e será publicado todas as terças-feiras.
rav1e atualmente requer Rust 1.74.0 ou posterior para ser compilado.
Algumas otimizações específicas x86_64
requerem NASM 2.14.02
ou mais recente e são habilitadas por padrão. strip
será usado se disponível para remover os símbolos locais dos objetos ASM.
O CI está testando no nasm 2.15.05
, portanto, podem ocorrer bugs para outras versões. Se você encontrar um, abra um problema!
Ubuntu 20.04 ( nasm 2.14.02
)
sudo apt install nasm
Ubuntu 18.04 ( nasm 2.14.02
)
sudo apt install nasm-mozilla
# link nasm into $PATH
sudo ln /usr/lib/nasm-mozilla/bin/nasm /usr/local/bin/
Fedora 31, 32 ( nasm 2.14.02
)
sudo dnf install nasm
janelas ( nasm 2.15.05
)
Tenha um binário NASM no PATH do seu sistema.
$NASM_VERSION = " 2.15.05 " # or newer
$LINK = " https://www.nasm.us/pub/nasm/releasebuilds/ $NASM_VERSION /win64 "
curl --ssl-no-revoke -LO " $LINK /nasm- $NASM_VERSION -win64.zip "
7z e -y " nasm- $NASM_VERSION -win64.zip " -o " C:nasm "
# set path for the current sessions
set PATH= " %PATH%;C:nasm "
macOS ( nasm 2.15.05
)
brew install nasm
Para construir o binário de lançamento em target/release/rav1e
execute:
cargo build --release
API e recursos experimentais podem ser habilitados usando o recurso unstable
.
cargo build --features < feature > ,unstable
cargo build --features channel-api,unstable
Esses recursos e API estão fadados a mudar e evoluir, não confie que eles permaneçam iguais ao longo dos lançamentos.
O compilador ferrugem pode produzir um binário que é cerca de 11% -13% mais rápido se puder usar avx2
, bmi1
, bmi2
, fma
, lzcnt
e popcnt
no código geral, você pode permitir isso emitindo:
RUSTFLAGS= " -C target-cpu=native " cargo build --release
# or
RUSTFLAGS= " -C target-cpu=x86-64-v3 " cargo build --release
O binário resultante não funcionará em CPUs que não possuam o mesmo conjunto de extensões habilitadas.
NOTA : Você pode usar
rustc --print target-cpus
para verificar se a CPU é suportada, caso contrário-C target-cpu=native
seria autônomo.
rav1e fornece um conjunto compatível com C de biblioteca, cabeçalho e arquivo pkg-config.
Para construí-lo e instalá-lo você pode usar cargo-c:
cargo install cargo-c
cargo cinstall --release
Consulte as instruções de instalação do cargo-c.
Os vídeos de entrada devem estar no formato y4m. O formato de cores monocromáticas não é compatível.
cargo run --release --bin rav1e -- input.y4m -o output.ivf
(Encontre um arquivo y4m para teste em tests/small_input.y4m
ou em http://ultravideo.cs.tut.fi/#testsequences)
A saída do codificador deve ser compatível com qualquer decodificador AV1 compatível com a especificação v1.0.0. Você pode decodificar usando dav1d, que agora está empacotado.
dav1d -i output.ivf -o output.y4m
rav1e possui vários recursos opcionais que podem ser habilitados passando --features
para cargo. Passar --all-features
é desencorajado.
Encontre uma lista completa na tabela de recursos em Cargo.toml
asm
- habilitado por padrão. Quando ativado, o assembly é criado para as plataformas que o suportam.x86_64
: Requer nasm
.aarch64
gas
clang
assembler definindo CC=clang
NOTA : SSE2
está sempre habilitado em x86_64
, neon
está sempre habilitado para aarch64, você pode definir a variável de ambiente RAV1E_CPU_TARGET
como rust
para desabilitar todas as rotinas otimizadas para montagem em tempo de execução.
Por favor, leia nosso guia para contribuir com rav1e.
Venha conversar conosco no canal IRC #daala no Libera.Chat! Você também pode usar um cliente web para ingressar com um navegador web.