#less #bit #advanced #encoder #coding #encoding

no-std less-avc

less高级视频编码(H.264)编码

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视频 中排名

Download history 332/week @ 2024-04-14 273/week @ 2024-04-21 147/week @ 2024-04-28 117/week @ 2024-05-05 140/week @ 2024-05-12 77/week @ 2024-05-19 251/week @ 2024-05-26 82/week @ 2024-06-02 183/week @ 2024-06-09 140/week @ 2024-06-16 99/week @ 2024-06-23 64/week @ 2024-06-30 150/week @ 2024-07-07 124/week @ 2024-07-14 758/week @ 2024-07-21 80/week @ 2024-07-28

1,120 每月下载量

MIT/Apache

62KB
1.5K SLoC

less-avc - Less高级视频编码 - H.264编码器

Crates.io Documentation Crate License

此模块包含一个针对无损编码优化的纯Rust实现的H.264编码器。它很简单("less advanced"),并且只使用H.264规范中编码器功能的一小部分。

功能和特点

  • 纯Rust。
  • 不使用unsafe
  • 支持8位和12位单色(仅亮度4:0:0)和彩色(4:2:0)数据的无损编码。
  • 包括一个针对仅亮度数据的优化路径,其中不保存色度数据。
  • 使用ALL-Intra,也称为All-I进行编码。每个帧都记录为I(内部)帧(也称为"关键帧"),使用PCM编码。
  • 使用openh264ffmpeg测试解码图像,以确保编码的图像可以无损保留。
  • 可以在不使用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