package
1.0.0
Repository: https://github.com/mask-pp/rtp-ps.git
Documentation: pkg.go.dev

# README

PS结构介绍

Key Point

  1. 一帧原始数据只能包含一个ps, map,sys(关键帧需要)等结构.当一帧数据超过pes最大的负载时(0xFFFF),则一帧数据可能有多个pes结构
  2. rtp结构是包含在封装的最外层,所以 一帧数据或者一片pes结构,可能会被分成多个rtp包
  3. 各个结构中可能都有扩充字段,在解析的时候可以通过扩充字段来解析到表示的长度,从而得到真实的原始数据的长度 | ps | system header | psm | pesv | pesa | pesv为视频pes包, pesa为音频pes包 非关键帧的ps包结构一般不包含系统头和PSM

针对PSM中流类型的取值如下:

流类型十六进制值
MPEG-40x10
H.2640x1B
SVAC0x80
G.7110x90
G.722.10x92
G.723.10x93
G.7290x99
SVAC 音频0x9B
具体可以参看ISO/IEC 13818-1:2000

各个结构的头字段的说明

PS

字段名比特位长度含义
pack_start_code32起始码字段0x000001BA 标志为一包的开始
marker_bit2标记位字段2位字段,取值01
system_clock_reference_base (32..30)3系统时钟参考字段
marker_bit1标记位字段取值1
system_clock_reference_base(29..15)15系统时钟参考字段
marker_bit1标记位字段取值1
system_clock_reference_base(14..0)15系统时钟参考字段
marker_bit1标记位字段取值1
system_clock_reference_extension9系统始终参考字段
marker_bit1标记位字段取值1
program_mux_rate22节目复合速率字段
marker_bit1标记記位字段取值1
marker_bit1标记位字段取值1
reserved5填充字段
pack_stuffing_length3包填充长度字段

System

字段名比特位长度含义
system_header_start_code32开始码 0x000001BB
header_length16該字段後的系統標題的字節長度
marker_bit1标记位字段取值1
rate_bound22速率界限字段
marker_bit1标记位字段取值1
audio_bound6音频界限字段
fixed_flag1固定标志字段
CSPS_flag1CSPS标志字段
system_audio_lock_flag1系統音频锁定标志字段
system_video_lock_flag1系統视频锁定标志字段
marker_bit1标记位字段取值1
vedio_bound5视频界限字段
packet_rate_restriction_flag1分组速率限制标记字段
reserved_bits7保留位字段
stream_id8流标志字段 一般0xe0指视频,0xc0音频
marker_bit2取值11
P-STD_buffer_bound_scale1bP-STD界限比例字段
P-STD_buffer_size_bound13P-STD大小界限字段
注:可能会有多个stream , 通过stream_id的第一个bit判断是否存在stream

Map

字段名比特位长度含义
packet start code32映射流起始码标志字段
program stream map length16节目流映射长度字段
current_next_indicator1当前下一個指示符字段
reserved2填充字段
program_stream_map_version5节目流映射版本字段
reserved7预留填充字段
marker_bit1标记位字段取值1
program_stream_info_length16节目流信息长度字段
elementary_stream_map_length16基本流映射长度字段
stream_type8流类型字段 0x1b H2640x24 H265
elementary_stream_id8视频取值0xe0-0xef,通常为0xe0,音频取值0xc0-0xdf,通常为0xc0
elementary_stream_info_length16基本流信息长度字段
CRC_3232CRC字段

PES

字段名比特位长度含义
packet_start_code_prefix24分组起码码0x000001
stream_id8流标志字段stream_id,其中0x(C0DF)指音频,0x(E0EF)视频
PES_packet_length16PES分组长度字段
marker_bit2标志位,10
PES_scrambling_control2PES加扰控制字段
PES_priority1PES优先级字段
data_alignment_indicator1数据对其指示符字段
copyright1盘权字段
original_or_copy1原始或拷贝字段
PTS_DTS_flags2PTS DTS标志字段
ESCR_flag1ESCR标志字段
ES_rate_flag1ES速率标志字段
DSM_trick_mode_flag1DSM特技方式标志字段
additional_copy_info_flag1附加版权信息标志字段
PES_CRC_flag1PES CRC标志字段
PES_extension_flag1PES扩张标志字段
PES_header_data_length8PES标题数据长度字段

注:后面会根据此长度来填写 pts, dts等

# Functions

No description provided by the author
No description provided by the author

# Constants

# Variables

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

https://github.com/videolan/vlc/blob/master/modules/demux/mpeg */.
No description provided by the author
RtpTransfer ...