接着上次的说,上次主要是讲的是H264的NAL,其实RTP打包发送的就是一个个NAL,只是打包的方式会不同。
H264的码流的打包方式有两种:一种为annex-b byte stream format的格式,是绝大部分编码器的默认输出格式,就是每个帧的开头的3~4个字节是H264的start_code(0x00000001或者0x000001)。另一种是原始的NAL打包格式,就是开始的若干字节(1,2,4字节)是NAL的长度,而不是start_code,此时必须借助某个全局的数据来获得编码器的profile、level、PPS、SPS等信息才可以解码。RTP传输的是annexb的h264码流。RTP格式流为:NALU数据+20个字节的类似的并不符合RTP协议的RTP头。这里注意:H.264协议只规定了字节流格式(即annex-b byte stream format),没有规定 RTP 格式。实际包交换网络中必须按照 RFC3984 将 NALU 数据封装为 RTP 包。这里简单说下RTP的概念以及和其它容易搞混的概念。
RTP: Real-time Transport Protocol,实时传输协议,一般用于多媒体数据的传输。
RTCP: RTP Control Protocol,实时传输控制协议,同RTP一起用于数据传输的监视,控制功能。
RTSP: Real Time Streaming Protocol,实时流协议,用于多媒体数据流的控制,如播放,暂停等。