H.264流媒体协议格式学习总结

    此文在网上文章的基础上做了个人针对h264在流媒体协议格式的学习总结。

    本文需要读者对H.264流有一定的了解才可以理解2种格式差异。
    
首先要理解的是没有标准的H.264基本流格式。文档中的确包含了一个Annex,特别是描述了一种可能的格式Annex B格式,但是这个并不是一个必须要求的格式。标准文档中指定了视频怎样编码成独立的包,但是这些包是怎样存储和传输的却是开放的。

   关于h264在流媒体协议中的传输格式参考如下链接:

   链接地址:http://blog.csdn.net/romantic_energy/article/details/50508332

 

关键注意点:

1.H264标准文档规定了视频怎么编码成独立的包,但是对包怎样存储和传输却是开放的。

2.NALU格式分为2类,VCL(IDR)non-VCL(SPS,PPS)。一个单独的NALU包不意味着一个完整的帧,一帧数据可以包含多个NALU,把帧切换成NALU较消耗CPU资源,所以把一帧切分为几个NALU包并不常用。

3. 4字节类型的开始码通常只用于标识流中的随机访问点,如SPS PPS AUDIDR,然后其他地方都用3字节类型的开始码以减少数据量。

4.在实时流传输时(直播),一个NALU包一般包含一个完整的帧,每一个IDR帧前面都需要带上SPS,PPS。在libX264编码器中,每次调用X264_encoder_encode输出n个帧,每次输出的都是完整的帧,

5.如果发送的是实时流,不需要对帧进行界定;如果是H264AAC文件,则需要帧界定。H264流的第一帧一定是SPS,第二帧一定是PPS。发送NALU时需要除去帧界定符。

 

参考链接:http://www.codeman.net/2014/01/439.html

 

你可能感兴趣的:(h264)