[RTMP] 国内各大视频直播CDN厂商推流抢流行为分析
2021-01-14 21:42
330 查看
背景
当存在一个推流客户端正在向rtmp://xxx.com/live/yyy推流时,又有另外一个推流客户端同时对这个地址进行推流,会发生什么呢?
查阅了 Adobe RTMP Spec 发现规范本身并未说明和定义这个场景下RTMP服务器应该怎么处理。
最近在实际工作中遇到部分客户对推流地址资源管理不恰当而导致重复推流报错的问题,且在查问题的过程中发现各个CDN厂商对“抢流”的处理各不相同,查阅相关文档说明发现资料甚少,故专门对它们的抢流行为做如下分析。
抢流:指对同个地址资源进行重复推流
步骤
- 打开Wireshark捕获网卡,过滤规则:
tcp && tcp.port == 1935
(之所以不直接写rtmpt
是因为还想观察传输层的行为) - 获取对应厂商的推拉流URL,假设推流地址是:
rtmp://xxx.com/live/yyy
- 使用
ffmpeg
推送一个本地电影文件:ffmpeg -re -i Movie-1.flv -vcodec h264 -f flv "rtmp://xxx.com/live/yyy"
- 使用另一个
ffmpeg
推送另一个本地电影文件到同个URL:ffmpeg -re -i Movie-2.flv -vcodec h264 -f flv "rtmp://xxx.com/live/yyy"
- 使用
ffplay
播放拉流地址内容 - 观察现象并分析Wireshark抓包结果
厂商
数据
注:下列结果仅代表发表本文的时候的各CDN厂家行为,随着厂商对服务器的更新迭代,可能会有所改变。
ffplay拉流播放的是Movie-1内容
publish()请求发出之后服务器应答
onStatus('NetStream.Publish.BadName')(见参考文档)
ffplay拉流播放的是Movie-1内容
ffplay拉流播放的是Movie-1内容
关闭第一个推流的程序,播放内容变成Movie-2的内容
ffplay拉流播放的是Movie-1内容
与官方文档中提到的后者挤掉前者的说法不一致
ffplay拉流播放的是Movie-1内容
publish()请求发出之后服务器应答
onStatus('NetStream.Publish.AlreadyExistStreamName')(见参考文档)
结论
总的来说,按当前实验结果来看,在这种细枝末节的功能点上,金山云的文档说明最清晰最规范,点个赞!
网宿的行为符合
Flash AS3的定义,至少有据可依。
而腾讯云与七牛云的文档说明均存在错误的地方(至少本次实验中是这样的),尤其是腾讯云的现象让我很意外。
而阿里云竟然连这块的文档都没有。。(也许是我没搜到,若有的话望指正)
参考
相关文章推荐
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- Android实现录屏直播(三)MediaProjection + VirtualDisplay + librtmp + MediaCodec实现视频编码并推流到rtmp服务器
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- 各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- 各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient
- iOS之一个超赞的视频直播、第三方库,直播看这个就够了,支持RTMP推流,美颜直播
- Android实现录屏直播(三)MediaProjection + VirtualDisplay + librtmp + MediaCodec实现视频编码并推流到rtmp服务器
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- iOS之一个超赞的视频直播、第三方库,直播看这个就够了,支持RTMP推流,美颜直播
- ios视频直播(二)- RTMP协议学习总结
- 使用nginx-rtmp搭建视频直播服务器
- iOS RTMP 视频直播开发笔记(1)----- 采集摄像头图像
- TV视频客户端的厂商分析
- [zz]目前国内p2p视频直播软件
- 利用nginx搭建RTMP视频点播、直播、HLS服务器
- cool-2018-03-09-linux下通过nginx安装rtmp视频服务器-包括推流和拉流-直播和点播
- EasyRTMP手机直播推流到EasyDSS进行RTMP直播过程中分辨率反复切换崩溃问题解决