6个版本 (破坏性更新)
| 0.7.0 | 2023年5月30日 |
|---|---|
| 0.6.0 | 2022年8月8日 |
| 0.5.0 | 2021年6月9日 |
| 0.4.0 | 2020年3月31日 |
| 0.2.0 | 2019年6月1日 |
#91 in 视频
1,446 每月下载量
用于 6 个crate(4个直接使用)
220KB
5K SLoC
h264-reader
H264比特流语法的读取器,用Rust编写。
旨在提供对流元数据的访问;实际上不解码视频。
实现尝试最小化源数据的复制,以提高效率,但代价是更复杂的API
支持的语法
以下列表显示了每个H264语法元素的当前支持状态
- 字节流格式
- 附件B格式(例如,在MPEG-TS中)
- AVCC格式(例如,在MP4中)
- 网络抽象层单元(NAL单元)
-
slice_layer_without_partitioning_rbsp() -
slice_data_partition_a_layer_rbsp() -
slice_data_partition_b_layer_rbsp() -
slice_data_partition_c_layer_rbsp() -
slice_layer_without_partitioning_rbsp() -
sei_rbsp()补充增强信息 标题 - 支持以下有效负载-
buffering_period() -
pic_timing() -
pan_scan_rect() -
filler_payload() -
user_data_registered_itu_t_t35() -
user_data_unregistered() -
recovery_point() -
dec_ref_pic_marking_repetition() -
spare_pic() -
scene_info() -
sub_seq_info() -
sub_seq_layer_characteristics() -
sub_seq_characteristics() -
full_frame_freeze() -
full_frame_freeze_release() -
full_frame_snapshot() -
progressive_refinement_segment_start() -
progressive_refinement_segment_end() -
motion_constrained_slice_group_set() -
film_grain_characteristics() -
deblocking_filter_display_preference() -
stereo_video_info() -
post_filter_hint() -
tone_mapping_info() - 附件G标题
- 附件H标题
- 附件I标题
- 附件J标题
-
frame_packing_arrangement() -
display_orientation() -
mastering_display_colour_volume() -
colour_remapping_info() -
alternative_transfer_characteristics() -
alternative_depth_info()
-
-
seq_parameter_set_rbsp() -
pic_parameter_set_rbsp() -
access_unit_delimiter_rbsp() -
end_of_stream_rbsp() -
filler_data_rbsp() -
seq_parameter_set_extension_rbsp() -
prefix_nal_unit_rbsp() -
subset_seq_parameter_set_rbsp() -
depth_parameter_set_rbsp() -
slice_layer_without_partitioning_rbsp() -
slice_layer_extension_rbsp() -
slice_layer_extension_rbsp()
-
设计目标
避免复制
解析组件可以接受部分数据以避免将数据复制到中间缓冲区。这是为了支持以下常见情况:
- 嵌入在MPEG-TS数据包中的数据,其中h264数据与MPEG-TS头部数据交织
- 从网络读取的数据,在任何时刻可用的数据可能是不完整的
接受部分数据的替代方案是取多个部分数据
懒解析
实现应该编写为在调用访问器方法之前延迟解析数据结构。这可能意味着为不关心所有数据的调用者节省解析成本。将这个原则普遍应用可能很困难,所以有些地方我们不必费心,而是直接进行“贪婪解析”(尤其是按位定义的结构,而不是按字节定义的结构)。
依赖项
~760KB