RTP协议解析及H264/H265 音视频RTP打包分析
实时传输协议(RTP)是一个网络传输协议,由IETF在1996年公布的,用于在网络上传递音频和视频数据。最初设计为多播协议,但现在广泛应用于单播场景,如流媒体系统(配合RTSP)、视频会议和一键通系统(配合H.323或SIP),成为IP电话产业的基础。
在RTSP会话成功建立并开始传输后,音频和视频数据通过RTP协议打包发送至客户端;RTP协议与RTP控制协议RTCP结合使用,并基于UDP协议构建。
RTP协议的报头解析如下:
V:版本号,占据2位,当前版本号为2。
P:填充标志,占据1位,当P=1时,在报文尾部填充额外的八位组,这些组不是有效负载的一部分。
X:扩展标志,占据1位,当X=1时,RTP报头后跟有一个扩展报头。
CC:CSRC计数器,占据4位,指示CSRC标识符的数量。
M:标记,占据1位,不同有效负载类型有不同的含义,视频标记表示帧结束,音频标记表示会话开始。
PT:有效载荷类型,占据7位,说明RTP报文中的有效负载类型,如GSM音频、JPEM图像等。
sequence number:序列号,占据16位,标识发送者发送的RTP报文的序列号,每发送一个报文,序列号递增1。接收者通过序列号检测报文丢失情况,重新排序报文并恢复数据。
timestamp:时间戳,占据32位,表示RTP报文第一个八位组的采样时刻。接收者使用时间戳进行延迟和抖动计算,并进行同步控制。
SSRC:同步信源标识符,占据32位,标识同步信源,每个会话独立使用一个随机选择的同步信源标识符。
CSRC:特约信源标识符,每个CSRC信源占据32位,最多可有0-15个,数量由CC决定,标识RTP报文有效负载中的所有特约信源。
在进行H264/H265 RTP打包分析时,需要注意以下几点:
RTP包头封装:每帧数据包都需添加上述描述的RTP包头,对于每路视频流,RTP包头(序列号除外)基本保持不变。注意发送端数据大小的位填充限制。
数据流包头:对于H264、H265、AAC和G711,分别在RTP包头后按照格式封装自己的数据头。
- H264:一个字节,h265:两个字节,aac:四个字节。
H264打包:考虑MTU大小,数据包大小不能超过MTU限制。通常,设备不确切知道当前网络的MTU大小,因此在开发时,参考ffmpeg中给出的大小值。
H265打包:打包过程与H264类似,H265的数据头为三个字节。
AAC打包:每帧AAC数据前应包含四个字节的头,格式为RTP包头+AAC字节头+AAC数据。
参考代码示例:ffmpeg中的rtpenc_h264_hevc.c文件中定义的ff_rtp_send_h264_hevc函数,将h264和h265的nalu打包在同一函数中,通过判断语句区分。
看电影慢动作,声音与图像不一致,需要什么软件。请教一下?
9. 对H264视频的HDTV\/TS影片,建议使用Haali或Nero的Mpeg2分离器,CoreAVC的H264视频解码器来播放。三、组件列表:1.Players - MPC 6.4.8.7 - KMP 2.9.2.1100 精简版 - BSplayer 1.39.829 精简版 2.Video codecs - Bink Decoder - CyberLink 264 Decoder Filter 1.7.0.1815 - ...
请问用什么软件在不改变格式的情况下,提高视频和声音的清晰度。请详细...
b.CoreAVC\/ffdshow H264解码器的快速解码,选择“F”选项即可; c.“IVTC”与“VPP”选项与Mpeg2视频的实时IVTC有关。DScaler 0.0.60 IVTC 2005.11.4 能对1080i的film进行实时IVTC;nVidia的视频解码器+VPP,能对某些DVD规格的TP视频进行实时IVTC(注意:选上VPP后硬解码会失效,将进行软解码)。 d.“解码中心”右...
用什么播放器看,tp和.vob文件不卡?
FFdshow 的视觉特效系统~超强的 GUI 界面~安装电视卡后可以直接代替原软件直接收看电视~支持播放 DVD\/VCD 以及绝大多数电脑的媒体文件(AVI 支持 Xvid\/DivX\/3vid\/H264 OGG\/OGM\/MKV 容器\/AC3\/DTS 解码~Monkey Audio 解码~)强烈推荐!此播放器除了会将自己的配置信息写入注册表外绝对绿色~本版本已经...