【网络通信 -- 直播】SRS 实战记录 -- 基于 RTMP 推流与 WEBRTC 拉流方案画面失真问题
【1】问题现象描述
基于 SRS 流媒体服务器搭建直播项目,推流使用 RTMP 协议,拉流使用 WebRTC 协议,直播过程中出现画面失真,画面显示如下;
【2】解决过程简记
【2.1】确定视频流中有无 B 帧 -- WebRTC 不支持 B 帧
FFMPEG 拉取 RTMP 流存储为 FLV 文件
ffmpeg -i (RTMP-URL) -f flv (文件路径/flv 文件)
flvAnalyser 分析 FLV 文件
VideoEye 分析
【2.2】确定 UDP 的丢包现象 -- WebRTC 基于 UDP 传输
UDP 测试丢包率
使用工具 : iperf
服务端测试命令
iperf -s -p 41132 -d -u -i 2
参数说明
-s : 以 Server 模式启动
-p : 端口号
-d : 同时进行双向传输测试
-u : 使用 UDP 协议
-i : 以秒为单位显示报告间隔
客户端测试命令
iperf -c 172.16.0.103 -t 30 -i 2 -p 41132 -m -u
参数说明
-c : 服务器端的 IP 地址
-p : 端口号
-u : 使用 UDP 协议
-t : 总的发送时间(单位 : 秒)
-i : 以秒为单位显示报告间隔
-m : 显示 TCP 最大 MTU 值
测试结果分析
客户端测试结果
测试结果显示,从左到右依次为 : 线程 ID,时间,传输数据,带宽
服务端测试结果
测试结果显示,从左到右依次为 : 线程 ID,时间,接收数据大小,带宽,时延,丢包/总包,丢包率;
参考与致谢
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。
【2】记一次UDP丢包严重的坑,通过iperf3测试,以及iperf3的程序下载和使用
【3】用iperf测udp