最快、最安全的 AV1 编码器。
rav1e 是一个 AV1 视频编码器。它的设计目标是最终覆盖所有用例,尽管在当前形式下它最适合 libaom(参考编码器)太慢的情况。
在doc/
中查找文档
在可预见的未来,rav1e 的每周预发布将在每周二发布。
rav1e 目前需要 Rust 1.74.0 或更高版本来构建。
某些特定于x86_64
的优化需要 NASM 2.14.02
或更高版本,并且默认启用。如果可以的话,将使用strip
从 asm 对象中删除本地符号。
CI 正在针对nasm 2.15.05
进行测试,因此其他版本可能会出现错误。如果您找到了,请打开一个问题!
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
窗口( nasm 2.15.05
)
在您的系统路径中有一个 NASM 二进制文件。
$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
要在target/release/rav1e
中构建发布二进制文件,请运行:
cargo build --release
实验性 API 和功能可以通过使用unstable
功能来启用。
cargo build --features < feature > ,unstable
cargo build --features channel-api,unstable
这些功能和 API 必然会发生变化和发展,不要依赖它们在发布过程中保持不变。
如果 rust 编译器可以在通用代码中使用avx2
、 bmi1
、 bmi2
、 fma
、 lzcnt
和popcnt
,则可以生成大约 11%-13% 的二进制文件,您可以通过发出以下命令来允许它:
RUSTFLAGS= " -C target-cpu=native " cargo build --release
# or
RUSTFLAGS= " -C target-cpu=x86-64-v3 " cargo build --release
生成的二进制文件无法在未启用同一组扩展的 cpu 上运行。
注意:您可以使用
rustc --print target-cpus
来检查 cpu 是否受支持,如果不支持-C target-cpu=native
将是无操作。
rav1e提供了一组与 C 兼容的库、头文件和 pkg-config 文件。
要构建和安装它,您可以使用cargo-c:
cargo install cargo-c
cargo cinstall --release
请参考cargo-c安装说明。
输入视频必须为 y4m 格式。不支持单色颜色格式。
cargo run --release --bin rav1e -- input.y4m -o output.ivf
(在tests/small_input.y4m
或 http://ultravideo.cs.tut.fi/#testsequences 中查找用于测试的 y4m 文件)
编码器输出应与任何符合 v1.0.0 规范的 AV1 解码器兼容。您可以使用现已打包的 dav1d 进行解码。
dav1d -i output.ivf -o output.y4m
rav1e 有几个可选功能,可以通过将--features
传递给 Cargo 来启用。不鼓励传递--all-features
。
在Cargo.toml
的功能表中查找完整列表
asm
- 默认启用。启用后,将为支持它的平台构建程序集。x86_64
:需要nasm
。aarch64
gas
CC=clang
使用clang
汇编器注意: SSE2
始终在x86_64
上启用, neon
始终在 aarch64 上启用,您可以将环境变量RAV1E_CPU_TARGET
设置为rust
以在运行时禁用所有汇编优化例程。
请阅读我们的 rav1e 贡献指南。
欢迎通过 Libera.Chat 上的 IRC 频道 #daala 与我们聊天!您还可以使用 Web 客户端通过 Web 浏览器加入。