25个版本
0.7.1 | 2024年1月10日 |
---|---|
0.7.0 | 2023年12月30日 |
0.6.6 | 2023年5月16日 |
0.6.3 | 2023年1月10日 |
0.1.0 | 2019年11月9日 |
#6 in 视频
202,205 每月下载量
用于 33 个crates(5直接)
10MB
258K SLoC
rav1e
最快且最安全的AV1编码器。
概述
rav1e是一个AV1视频编码器。它旨在最终覆盖所有用例,尽管在当前形态下,它最适合libaom(参考编码器)太慢的情况。
功能
- 帧内、帧间和切换帧
- 64x64超级块
- 4x4到64x64 RDO选择的正方形和矩形块
- DC、H、V、Paeth、平滑和所有方向预测模式
- DCT、(FLIP-)ADST和自反变换(分别最高到64x64、16x16和32x32)
- 8位、10位和12位深度颜色
- 4:2:0、4:2:2和4:4:4色度采样
- 11个速度设置(0-10,详尽到近乎实时)
- 常量量化器和目标比特率(单遍和多遍)编码模式
- 静态图像模式
文档
在doc/
中查找文档
版本
在可预见的未来,rav1e将每周二发布一个预发布版本。
构建
工具链:Rust
rav1e当前需要Rust 1.70.0或更高版本来构建。
依赖项:NASM
一些针对x86_64
的特定优化需要NASM 2.14.02
或更高版本,默认启用。如果可用,将使用strip
来从asm对象中删除局部符号。
CI正在测试nasm 2.15.05
,因此可能存在其他版本的错误。如果您发现一个,请提交一个问题!
安装nasm
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
)
在您的系统PATH中有一个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
不稳定的功能
可以通过使用unstable
功能启用实验性API和功能。
cargo build --features <feature>,unstable
当前不稳定的特性
- 通道API
cargo build --features channel-api,unstable
这些特性和API可能会更改和演变,不要依赖它们在版本之间保持不变。
特定目标构建
如果Rust编译器可以使用avx2
、bmi1
、bmi2
、fma
、lzcnt
和popcnt
在通用代码中,则rust编译器可以生成大约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
将是一个无效操作。
构建C-API
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进行解码,它现在已在40多个仓库中打包。
dav1d -i output.ivf -o output.y4m
配置
rav1e具有一些可选功能,可以通过将--features
传递给cargo来启用。不建议传递--all-features
。
功能
在Cargo.toml
中的feature-table中可以找到完整的列表。
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浏览器加入。
依赖项
~1–16MB
~238K SLoC