解决SRS推送webrtc流卡顿问题
目录
- 1.问题描述
- 2.原因分析
- 3.ffmpeg去掉B帧的方法
- 3.1 命令行推流
- 3.2 ffmpeg源码推流
1.问题描述
使用ffmpeg通过rtmp协议推流给SRS,然后浏览器通过webrtc拉取播放流,经多次测试发现webrtc播放流总是卡顿,而拉取rtmp流是正常的。
2.原因分析
经测试发现,只要rtmp推流的视频编码中含有B帧,SRS推送出来的webrtc流就卡顿,去掉就好了。
3.ffmpeg去掉B帧的方法
3.1 命令行推流
命令行推流时,增加-bf 0 选项关闭B帧
nohup ffmpeg -re -stream_loop -1 -i ${vfile} -c:v libx264 -c:a copy -bf 0 -f flv rtmp://10.0.0.136/live/${vname} > /dev/null 2>&1 &
3.2 ffmpeg源码推流
// 设置最大 B 帧数量为 0
codec_context->max_b_frames = 0;