6个版本
0.1.5 | 2023年8月29日 |
---|---|
0.1.4 | 2023年5月24日 |
0.1.3 | 2023年3月30日 |
0.1.2 | 2022年11月20日 |
56 在 视频 中排名
1,120 每月下载量
62KB
1.5K SLoC
less-avc - Less高级视频编码 - H.264编码器
此模块包含一个针对无损编码优化的纯Rust实现的H.264编码器。它很简单("less advanced"),并且只使用H.264规范中编码器功能的一小部分。
功能和特点
- 纯Rust。
- 不使用
unsafe
。 - 支持8位和12位单色(仅亮度4:0:0)和彩色(4:2:0)数据的无损编码。
- 包括一个针对仅亮度数据的优化路径,其中不保存色度数据。
- 使用ALL-Intra,也称为All-I进行编码。每个帧都记录为I(内部)帧(也称为"关键帧"),使用PCM编码。
- 使用
openh264
和ffmpeg测试解码图像,以确保编码的图像可以无损保留。 - 可以在不使用Rust标准库
std
的情况下编译。换句话说,指定了no_std
属性。(需要全局分配器。)
期望但尚未实现的功能
- 支持其他位深度和色度采样分辨率(例如4:4:4)。
值得考虑的功能
- 支持上下文自适应可变长度编码(CAVLC)。
- 支持上下文自适应二进制算术编码(CABAC)。
这受到了Ben Mesander的世界上最小的H.264编码器的启发。
测试
使用以下命令运行基本测试
cargo test
ffmpeg和openh264的完整往返测试在testbench
目录和crate中。
cd testbench
cargo test
这些测试可以将创建的流导出为.h264
文件,如果设置了LESSAVC_SAVE_TEST_H264
环境变量。要查看保存.h264文件的位置,请在运行测试时使用cargo test -- --nocapture
。)要将这些转换为.mp4
#!/bin/bash -x
set -o errexit
FILES="./*.h264"
for f in $FILES
do
echo "Processing $f file..."
ffmpeg -i $f -vcodec copy $f.mp4
# ffmpeg -i $f $f.png
done
基准测试
基准测试在testbench
目录和crate中
cd testbench
cargo bench
# Or, to benckmark while compiling for the native CPU architecture, like so:
RUSTFLAGS='-C target-cpu=native' cargo bench
许可证
版权所有 2022-2023 Andrew D. Straw。
许可协议:Apache许可证2.0版本 <LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0> 或MIT许可证 <LICENSE-MIT 或 http://opensource.org/licenses/MIT>,由您选择。
依赖关系
~1MB
~27K SLoC