3个版本

0.1.3 2024年1月7日
0.1.1 2021年1月5日
0.1.0 2019年6月4日

视频 中排名 246

Download history 754/week @ 2024-04-23 621/week @ 2024-04-30 635/week @ 2024-05-07 712/week @ 2024-05-14 779/week @ 2024-05-21 687/week @ 2024-05-28 725/week @ 2024-06-04 750/week @ 2024-06-11 716/week @ 2024-06-18 551/week @ 2024-06-25 621/week @ 2024-07-02 955/week @ 2024-07-09 1168/week @ 2024-07-16 1208/week @ 2024-07-23 1007/week @ 2024-07-30 576/week @ 2024-08-06

每月下载 4,183
rav1e 中使用

BSD-2-Clause许可证

7KB
126

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 来从汇编对象中移除局部符号。

CI 正在使用 nasm 2.15.05 进行测试,因此可能存在其他版本的错误。如果你发现了,请提交一个问题!

安装 nasm

ubuntu 20.04nasm 2.14.02

sudo apt install nasm

ubuntu 18.04nasm 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, 32nasm 2.14.02

sudo dnf install nasm

windowsnasm 2.15.05
确保系统中 NASM 二进制文件 在系统 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"

macOSnasm 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 在通用代码中,它可以生成大约 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 个仓库中

dav1d -i output.ivf -o output.y4m

配置

rav1e 有几个可选功能,可以通过向 cargo 传递 --features 来启用。不建议传递 --all-features

特性

完整列表请参阅 Cargo.toml 中的 feature-table。

  • asm - 默认启用。启用时,将为支持的平台构建汇编。
    • x86_64:需要 nasm
    • aarch64
      • 需要 gas
      • 替代方案:通过设置 CC=clang 使用 clang 汇编器。

注意:在 x86_64 上,始终启用 SSE2,对于 aarch64,始终启用 neon。您可以通过设置环境变量 RAV1E_CPU_TARGETrust 来在运行时禁用所有汇编优化例程。

贡献

请阅读我们关于如何 为 rav1e 贡献 的指南。

联系方式

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

依赖项

~150KB