Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54399
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 232
  • 用 户 组: 普通用户
  • 注册时间: 2020-11-30 14:45
个人简介

专注流媒体、视频物联网、云计算、大数据开发

文章分类

全部博文(22)

文章存档

2021年(18)

2020年(4)

我的朋友

分类: 架构设计与优化

2021-03-01 16:44:29

关于使用rtp推流,TSINGSEE青犀视频团队实际已经研发了很长时间,其中也碰到了不少问题,比如RTP推流客户端无法解析播放,或者遇到不同的报错,但这些目前都已经有了比较完善的解决办法。

在使用RTP推流时,默认ffmpeg使用的打包模式是packetization-mode=1,本文我们和大家分享另一个比较实用的技巧,就是使用ffmpeg配置rtp打包模式。

如何修改打包模式?关于RTP打包模式的说明如下:

目前ffmpeg默认使用的是1: Not interleaved 模式,针对客户的需要,服务端不支持STAP-A的组包模式,需要每个包单独发送,所以需要配置Single NAL模式。

ffmpeg 提供了h264_mode0配置

可以通过接口av_dict_set进行配置

配置完成后,还有个问题,需要配置pkt size,否则I帧无法完整发送,默认pkt size是1024个字节,而一般I帧都大于1024个字节,导致I帧发送不完整,图像传输失败,需要配置pkt size,在rtp url后面加上如下所示内容:
rtp://192.168.99.138:6666?pkt_size=65535

这样就配置完成了,可以通过wireshark抓包看,是否配置成功。

配置前抓包:

可以看到有组包现象 STAP-A 。

配置后抓包:

可以看到非I帧之间没有STAP-A的组包模式了,每个NAL都是单独发送的。同时看到对应的SDP也是packetization-mode=0。

阅读(582) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~