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