L'encodeur AV1 le plus rapide et le plus sûr.
rav1e est un encodeur vidéo AV1. Il est conçu pour couvrir à terme tous les cas d'utilisation, bien que dans sa forme actuelle, il soit plus adapté aux cas où libaom (l'encodeur de référence) est trop lent.
Retrouvez la documentation dans doc/
Dans un avenir prévisible, une avant-première hebdomadaire de rav1e sera publiée tous les mardis.
rav1e nécessite actuellement Rust 1.74.0 ou version ultérieure pour être construit.
Certaines optimisations spécifiques à x86_64
nécessitent NASM 2.14.02
ou une version plus récente et sont activées par défaut. strip
sera utilisé si disponible pour supprimer les symboles locaux des objets asm.
Le CI teste nasm 2.15.05
, donc des bugs pour d'autres versions peuvent survenir. Si vous en trouvez un, veuillez ouvrir un problème !
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
fenêtres ( nasm 2.15.05
)
Ayez un binaire NASM dans votre système PATH.
$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
Pour créer le binaire de version dans l'exécution target/release/rav1e
:
cargo build --release
L'API et les fonctionnalités expérimentales peuvent être activées à l'aide de la fonctionnalité unstable
.
cargo build --features < feature > ,unstable
cargo build --features channel-api,unstable
Ces fonctionnalités et API sont vouées à changer et à évoluer, ne comptez pas sur elles pour rester les mêmes au fil des versions.
Le compilateur Rust peut produire un binaire environ 11 à 13 % plus rapide s'il peut utiliser avx2
, bmi1
, bmi2
, fma
, lzcnt
et popcnt
dans le code général, vous pouvez l'autoriser en émettant :
RUSTFLAGS= " -C target-cpu=native " cargo build --release
# or
RUSTFLAGS= " -C target-cpu=x86-64-v3 " cargo build --release
Le binaire résultant ne fonctionnera pas sur les processeurs qui ne disposent pas du même ensemble d'extensions activées.
REMARQUE : Vous pouvez utiliser
rustc --print target-cpus
pour vérifier si le processeur est pris en charge, sinon-C target-cpu=native
ne serait pas une opération.
rav1e fournit un ensemble de bibliothèques, d'en-têtes et de fichiers pkg-config compatibles C.
Pour le construire et l'installer, vous pouvez utiliser cargo-c :
cargo install cargo-c
cargo cinstall --release
Veuillez vous référer aux instructions d'installation du cargo-c.
Les vidéos d’entrée doivent être au format y4m. Le format de couleur monochrome n'est pas pris en charge.
cargo run --release --bin rav1e -- input.y4m -o output.ivf
(Trouvez un fichier y4m pour tester sur tests/small_input.y4m
ou sur http://ultravideo.cs.tut.fi/#testsequences)
La sortie de l'encodeur doit être compatible avec tout décodeur AV1 conforme à la spécification v1.0.0. Vous pouvez décoder en utilisant dav1d, qui est désormais packagé .
dav1d -i output.ivf -o output.y4m
rav1e possède plusieurs fonctionnalités optionnelles qui peuvent être activées en passant --features
à cargo. Passer --all-features
est déconseillé.
Trouvez une liste complète dans le tableau des fonctionnalités de Cargo.toml
asm
- activé par défaut. Lorsqu'il est activé, l'assembly est créé pour les plates-formes qui le prennent en charge.x86_64
: Nécessite nasm
.aarch64
gas
clang
en définissant CC=clang
REMARQUE : SSE2
est toujours activé sur x86_64
, neon
est toujours activé pour aarch64, vous pouvez définir la variable d'environnement RAV1E_CPU_TARGET
sur rust
pour désactiver toutes les routines optimisées pour l'assemblage au moment de l'exécution.
Veuillez lire notre guide pour contribuer à rav1e.
Venez discuter avec nous sur la chaîne IRC #daala sur Libera.Chat ! Vous pouvez également utiliser un client Web pour vous connecter avec un navigateur Web.