5 个版本

0.0.5 2024年8月2日
0.0.4 2023年8月1日
0.0.3 2023年7月26日
0.0.2 2023年5月1日
0.0.1 2023年4月28日

#54 in Unix API

Download history 684/week @ 2024-04-27 588/week @ 2024-05-04 869/week @ 2024-05-11 809/week @ 2024-05-18 644/week @ 2024-05-25 602/week @ 2024-06-01 781/week @ 2024-06-08 672/week @ 2024-06-15 748/week @ 2024-06-22 494/week @ 2024-06-29 796/week @ 2024-07-06 508/week @ 2024-07-13 647/week @ 2024-07-20 783/week @ 2024-07-27 626/week @ 2024-08-03 399/week @ 2024-08-10

2,509 每月下载量

BSD-3-Clause

2.5MB
31K SLoC

Cros-codecs

crates.io docs.rs

Cros-codecs是一个轻量级、简单、低依赖且希望安全的crate,用于在Linux上进行硬件加速视频解码和编码。

它是为ChromeOS(特别是crosvm)开发的,但没有任何ChromeOS依赖,应在任何地方都可用。

当前功能

  • 简单的解码器API,
  • 支持VAAPI解码器(使用cros-libva)进行H.264、H.265、VP8、VP9和AV1解码,
  • 支持VAAPI编码器进行H.264、VP9和AV1编码,
  • 支持状态化的V4L2编码器。

计划中的功能

  • 支持状态化的V4L2解码器,
  • 支持无状态化的V4L2解码器,
  • 支持更多编码器编解码器,
  • C API,用于非Rust项目。

非目标

  • 不支持Linux以外的系统。

示例程序

ccdec示例程序可以解码编码流并将解码后的帧写入文件。因此,它可以用于测试目的。

$ cargo build --examples
$ ./target/debug/examples/ccdec --help
Usage: ccdec <input> [--output <output>] --input-format <input-format> [--output-format <output-format>] [--synchronous] [--compute-md5 <compute-md5>]

Simple player using cros-codecs

Positional Arguments:
  input             input file

Options:
  --output          output file to write the decoded frames to
  --input-format    input format to decode from.
  --output-format   pixel format to decode into. Default: i420
  --synchronous     whether to decode frames synchronously
  --compute-md5     whether to display the MD5 of the decoded stream, and at
                    which granularity (stream or frame)
  --help            display usage information

测试

可以使用Fluster进行测试,使用上述描述的ccdec示例程序。 此分支包含对cros-codecs测试的支持。只需确保ccdec二进制文件位于您的PATH中,然后使用其中一个ccdec解码器运行Fluster,例如。

python fluster.py run -d ccdec-H.264 -ts JVT-AVC_V1

鸣谢

初始提交中的大部分代码由Daniel Almeida编写,作为crosvm的VAAPI后端,然后被拆分为此crate。

依赖关系