Der schnellste und sicherste AV1-Encoder.
rav1e ist ein AV1-Video-Encoder. Es ist so konzipiert, dass es letztendlich alle Anwendungsfälle abdeckt. In seiner aktuellen Form eignet es sich jedoch am besten für Fälle, in denen libaom (der Referenz-Encoder) zu langsam ist.
Die Dokumentation finden Sie in doc/
Auf absehbare Zeit wird jeden Dienstag eine wöchentliche Vorabversion von rav1e veröffentlicht.
Zum Erstellen von rav1e ist derzeit Rust 1.74.0 oder höher erforderlich.
Einige x86_64
-spezifische Optimierungen erfordern NASM 2.14.02
oder neuer und sind standardmäßig aktiviert. Wenn verfügbar, wird strip
verwendet, um die lokalen Symbole aus den ASM-Objekten zu entfernen.
Das CI testet mit nasm 2.15.05
, daher können Fehler für andere Versionen auftreten. Wenn Sie eines finden, eröffnen Sie bitte ein Problem!
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
Windows ( nasm 2.15.05
)
Haben Sie eine NASM-Binärdatei in Ihrem Systempfad.
$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
Um eine Release-Binärdatei in target/release/rav1e
zu erstellen, führen Sie Folgendes aus:
cargo build --release
Experimentelle APIs und Funktionen können mithilfe der Funktion unstable
aktiviert werden.
cargo build --features < feature > ,unstable
cargo build --features channel-api,unstable
Diese Funktionen und APIs werden sich zwangsläufig ändern und weiterentwickeln. Verlassen Sie sich nicht darauf, dass sie über Releases hinweg gleich bleiben.
Der Rust-Compiler kann eine Binärdatei erzeugen, die etwa 11–13 % schneller ist, wenn er avx2
, bmi1
, bmi2
, fma
, lzcnt
und popcnt
im allgemeinen Code verwenden kann. Sie können dies zulassen, indem Sie Folgendes ausgeben:
RUSTFLAGS= " -C target-cpu=native " cargo build --release
# or
RUSTFLAGS= " -C target-cpu=x86-64-v3 " cargo build --release
Die resultierende Binärdatei funktioniert nicht auf CPUs, auf denen nicht die gleichen Erweiterungen aktiviert sind.
HINWEIS : Sie können
rustc --print target-cpus
verwenden, um zu überprüfen, ob die CPU unterstützt wird. Andernfalls wäre-C target-cpu=native
ein No-Op.
rav1e bietet einen C-kompatiblen Satz aus Bibliothek, Header und pkg-config-Datei.
Um es zu erstellen und zu installieren, können Sie Cargo-C verwenden:
cargo install cargo-c
cargo cinstall --release
Bitte beachten Sie die Cargo-C-Installationsanleitung.
Eingabevideos müssen im y4m-Format vorliegen. Das monochrome Farbformat wird nicht unterstützt.
cargo run --release --bin rav1e -- input.y4m -o output.ivf
(Eine y4m-Datei zum Testen finden Sie unter tests/small_input.y4m
oder unter http://ultravideo.cs.tut.fi/#testsequences)
Der Encoder-Ausgang sollte mit jedem AV1-Decoder kompatibel sein, der der Spezifikation v1.0.0 entspricht. Sie können mit dav1d dekodieren, das jetzt gepackt ist.
dav1d -i output.ivf -o output.y4m
Rav1e verfügt über mehrere optionale Funktionen, die durch Übergabe --features
an Cargo aktiviert werden können. Von der Übergabe von --all-features
wird abgeraten.
Eine vollständige Liste finden Sie in der Feature-Tabelle in Cargo.toml
asm
– standardmäßig aktiviert. Wenn diese Option aktiviert ist, wird die Baugruppe für die Plattformen erstellt, die sie unterstützen.x86_64
: Erfordert nasm
.aarch64
gas
clang
-Assembler, indem Sie CC=clang
festlegen HINWEIS : SSE2
ist auf x86_64
immer aktiviert, neon
ist immer für aarch64 aktiviert. Sie können die Umgebungsvariable RAV1E_CPU_TARGET
auf rust
setzen, um alle assemblierungsoptimierten Routinen zur Laufzeit zu deaktivieren.
Bitte lesen Sie unseren Leitfaden zum Mitwirken bei rav1e.
Kommen Sie und chatten Sie mit uns auf dem IRC-Kanal #daala auf Libera.Chat! Sie können auch einen Web-Client verwenden, um mit einem Webbrowser beizutreten.