美文网首页
rtsp播放h265(hevc)

rtsp播放h265(hevc)

作者: 诩宏 | 来源:发表于2018-07-25 21:10 被阅读0次

        对rtsp来说,要播放h265只要正确解析sdp和rtp包即可,这里分享下h265 sdp&rtp相关知识点,希望有用.

       1. H265 Nal Unit Header 简单介绍:

        H264的Nal Unit头是一个字节,265变成两个字节:

         F: 1 bit. forbidden_zero_bit.  265要求是0,是1的话指示语法违规等.

         Type: 6 bits. Nal类型.  vps是32, sps是33, pps是34, 前缀sei是39. IDR是19和20.

         LayerId: 6 bits. nuh_layer_id. 现在是0,将来可能扩展用.

         TID: 3 bits. nuh_temporal_id_plus1. TemporalId 是TID-1.

        2. SDP 参数介绍:

        2.1 IETF 分配给h265的媒体子类型如下:

        Type name:     video

        Subtype name:  H265

        可选参数:

         profile-space, tier-flag, profile-id, profile-compatibility-indicator, interop-constraints,level-id, sprop-sub-layer-id, recv-sub-layer-id, max-recv-level-id, tx-mode, sprop-vps, sprop-sps,   sprop-pps等等, 具体请参考相关文档,建议解析sprop-vps, sprop-sps, sprop-pps.

        2.2 SDP 举例:

        m=video 0 RTP/AVP 96

        a=rtpmap:96 H265/90000

        a=fmtp:96 profile-space=0;profile-id=0;tier-flag=0;level-id=0;interop-constraints=000000000000;sprop-vps=QAEMAf//AIAAAAMAAAMAAAMAAAMAALUCQA==;sprop-sps=QgEBAIAAAAMAAAMAAAMAAAMAAKACgIAtH+W1kkbQzkkktySqSfKSyA==;sprop-pps=RAHBpVgeSA==

       注意编码名称必须是:H265, Clock rate必须是90000.

       3. RTP 打包格式.

       实际中其实就用到两种格式,一种是一个nal单元打包到一个rtp包中。一种是nal单元比较大,分片打包在多个rtp中.

       3.1 单个Nal单元打包:

        PayloadHdr 把 NAL单元头填入就好.

        3.2 Nal单元分片打包:

        PayloadHdr还是拷贝NAL单元头,但是要把Type换成49.  FU header 就一个字节,格式如下:

    +---------------+

    |0|1|2|3|4|5|6|7|

    +-+-+-+-+-+-+-+-+

    |S|E|  FuType   |

    +---------------+

    S:为1表示第一个分片。 E:为1表示表示最后一个分片。FuType就是实际的Nal type类型。

    4. 小结:

    h265和h264有很多相似之处,都有sps和pps,用00 00 00 01进行nal 单元分隔. 如果想测试h265 rtsp播放效果,可以从github下载播放器测试h265播放效果。 更多问题欢迎交流:294891451499687479

    相关文章

      网友评论

          本文标题:rtsp播放h265(hevc)

          本文链接:https://www.haomeiwen.com/subject/oxvmmftx.html