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 视频

Download history 39789/week @ 2024-04-22 51385/week @ 2024-04-29 50894/week @ 2024-05-06 49816/week @ 2024-05-13 45020/week @ 2024-05-20 36692/week @ 2024-05-27 35281/week @ 2024-06-03 38459/week @ 2024-06-10 42716/week @ 2024-06-17 42690/week @ 2024-06-24 44661/week @ 2024-07-01 47486/week @ 2024-07-08 43828/week @ 2024-07-15 50847/week @ 2024-07-22 49717/week @ 2024-07-29 53670/week @ 2024-08-05

202,205 每月下载量
用于 33 个crates(5直接)

BSD-2-Clause

10MB
258K SLoC

Assembly 148K SLoC // 0.0% comments Rust 56K SLoC // 0.1% comments GNU Style Assembly 54K SLoC // 0.1% comments

rav1e Actions状态 CodeCov

最快且最安全的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编译器可以使用avx2bmi1bmi2fmalzcntpopcnt在通用代码中,则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.y4mhttp://ultravideo.cs.tut.fi/#testsequences)中找到用于测试的y4m文件)

解压缩视频

编码器输出应与符合v1.0.0规范的任何AV1解码器兼容。您可以使用dav1d进行解码,它现在已在40多个仓库中打包在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汇编器。

注意SSE2x86_64上始终启用,neon始终为aarch64启用,您可以设置环境变量RAV1E_CPU_TARGETrust以在运行时禁用所有汇编优化例程。

贡献

请阅读我们的rav1e贡献指南

联系方式

Libera.Chat的IRC频道#daala上与我们聊天!您也可以使用Web客户端通过Web浏览器加入。

依赖项

~1–16MB
~238K SLoC