FFmpeg推送UDP裸流,播放端花屏问题

1. 前言

最近在调试流媒体服务器的bug,准备尝试一些新的方法,测试用FFmpeg将rtsp流转为UDP裸流的时候,发现当rtsp流是主码流,也就是1280*720时,播放端容易花屏,当我将rtsp流切换为子码流,也就是704*576,然后播放端再也没有出现过问题。

2. 问题总结 

应该是播放端UDP缓冲区默认值正好介于900KB(1280*720)和396KB(704*576)之间,造成一部分数据丢失,所以播放端下方花屏越来越严重。因为这一区域的数据不断丢失。

3. 解决思路

播放端,应该将UDP缓冲区设置的大一些,一定要大于当前分辨率。

4. 拓展

如果是ffmpeg拉流的时候,也应该注意缓冲区大小,如下,在打开视频流的时候,通过buff_size 设置缓冲区,比如下面的2048000 (2MB),如果太小,播放端照样花屏。

AVDictionary *dic = NULL;
av_dict_set(&dic, "buffer_size", "2048000", 0);
avformat_open_input(&ifmt_ctx, input_filename, NULL, &dic);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值