H264: [ RTP传H264裸流 ] > 如何传(关注点:H264部分)

文章详细阐述了在RTP协议中传输H264编码的视频流时,如何处理不同大小的NAL单元。针对一帧内单个或多个NALU的情况,使用STAP-A组合多个NALU;对于大到无法一次性发送的NALU,则采用FU-A分片封装。FFMPEG的rtpenc_h264_hevc.c源码提供了实现这些封装模式的示例。
摘要由CSDN通过智能技术生成

RTP传h264裸流, 如何传:

 可能有几种情况:

1 一帧传一个NALU(NALU很小)

2 一帧传几个NALU(几个NALU很小)[STAP-A]

3 一帧连一个NALU都传不完(一个NALU很大)[FU-A]

如何解决这些问题??

单一NALU模式:一帧传一个NALU

[rtp帧头] + [nalu header] + [多媒体数据]

一帧传几个NALU: 组合帧封装模式>STAP-A组合类型

关注: STAP-A类型头 和nalu header是一样的, 只不过它的类型为24:

RTP包中, 标明是STAP-A类型后, 那么接下来就会有多个nal单元按上面的图组合在一起:

注: NALU SIZE: 比如0x0056那么字节流是这样: 先传0x00 再0x56(大端传送, 网络传送都这样)

分片封装模式FU-A: 一帧连一个NALU都传不完(一个NALU很大)

在rtp层来说: 就是一个普通的rtp包.而不是分包, 每一个都是完整包.

站在h264数据的角度: 实际一帧是传不完的, 要多次来传送. 

所以就引出了FU 模式, 如下: 

具体的FFMPEG编码代码:

libavformat/rtpenc_h264_hevc.c

        

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值