ffmpeg h264解码, 屏蔽因为网络丢包等各种原因导致的花屏帧 

---->看来问题只能这样解决了,现在还要多测测,防止产生新的问题。目前来看,对现有代码没有影响,花屏的帧直接屏蔽掉了。

思路:

问了下机顶盒方面h264解码的,他们用的是硬件解码,他们做到不花屏的方法就是简单的设置了一个硬件解码提供的接口:设置了错误处理模式。
我想这个错误处理模式肯定对那些错误的帧直接屏蔽掉了,这样显示到屏幕上就不花了。

因此,就有了问题:ffmpeg有没有错误处理的模式,能使花屏的帧(h264格式的)不显示出来?
查了些资料,没找到。

我假定ffmpeg没有这个模式,十有八九没有。我就用我的方法模拟一个错误处理模式。
在AVFrame(FF_COMMON_FRAME)里添加一个变量,datadamage.
这个变量为0时,表示这个frame没有错误;反之,为1时,表示有错误。

怎么用呢?
当av_decode_video()解出一帧后,判断这个标志:
为1。就不渲染,屏蔽掉。如果当前帧是关键帧,且标志为1,到下一个关键帧之前的所有帧都屏蔽掉。
为0就正常渲染。

现在的问题就变成了这个标志什么时候置的问题。
首先我们要知道一个frame(h264)什么时候开始解码的.知道了什么时候开始,也就知道了什么时候结束。(下一帧开始解码的时候,上一帧当然结束了)。
这里有个依据,current_mb_slice == 0时,表示一帧开始。
当然也可以用第2个方法:ff_h264_frame_start()这就是一帧开始了。

那么我们怎么判断这帧错误呢?
我用的方法是:
因为h264一帧由slice MB这些单位,当解这帧的任意slice或任意MB出现错误时,只要有一个错误,这帧就置错误标志。
另h264每帧之前还有些相应信息,SPS PPS.这些出现错误的话,理论上应该到下一个SPS或PPS之间的帧都要置错误标志,这个还没做(目前没什么影响)。再后面几天测试的时候可能要仔细考虑下。

上面就是目前的方案,也是想到唯一的方案,目前为止能屏蔽掉花屏的帧。

ffmpeg h264解码, 屏蔽因为网络丢包等各种原因导致的花屏帧相关推荐

  1. 网络丢包问题的原因及解决办法

    数据在INTERNET上是以数据包为单位传输的,每包nK,不多也不少.这就是说,不管网络线路有多好.网络设备有多强悍,你的数据都不会是以线性(就象打电话一样)传输的,中间总是有空洞的.数据包的传输,不 ...

  2. ping网络丢包的故障原因

    网络丢包是我们在使用ping对目站进行询问时,数据包由于各种原因在信道中丢失的现象.ping使用了ICMP回送请求与回送回答报文.ICMP回送请求报文是主机或路由器向一个特定的目的主机发出的询问,收到 ...

  3. 电脑ping服务器ip显示数据丢失,Win7系统如何测试网络丢包率解决网页显示不全的问题...

    Win7系统在上网过程中打开网页经常遇到网页显示不全,或者玩游戏卡顿的现象,但是过一会儿又恢复了.怎么回事呢?可能是因为网络丢包率太高导致的,我们可以Ping一下网络,找到故障原因.那么接下来小编和大 ...

  4. 网络分流器-网络丢包原因以及修复方法

    戎腾网络分流器作为专业的流量监控采集设备,具有丢包率低,性能可靠,高速率等优势,是整个网络安全领域网络监控前端重要的基础装备! 正交架构,支持1000以上10G和200以上100G,可根据需求进行调整 ...

  5. 服务器显示网络不稳定,服务器网络丢包的原因以及解决办法

    疯狗科技一个合肥好朋友的服务器网络最近不稳定,网站时不时打不开,刷新下就好. 疯狗进服务器用软件测试后,发下是网络丢包,于是找到了丢包的解决办法,转载来的: ■ 网络丢包的原因以及解决办法 ===== ...

  6. 记一次因为丢帧导致视频播放花屏问题的排查

    ​问题背景: 最近开发了一个HLS服务,主要是满足用户在浏览器上播放直播和点播视频的需求,特别像小程序或者微信这种,只有有链接就能查看视频,也不用装APP,还是方便不少.在开发过程中排查了一次花屏问题 ...

  7. 网络编程之网络丢包故障如何定位?如何解决?

    引言 本期分享一个比较常见的网络问题--丢包.例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能是 ...

  8. FEC(Forward Error Correction)前向纠错 UDP\RTP 中使用用于改善无线等网络丢包等问题--转...

    FEC(Forward Error Correction)前向纠错 UDP\RTP 中使用用于改善无线等网络丢包等问题 算法暂不介绍. 思路:FEC ENCODE 增加冗余包,当无线等网络丢包之后,接 ...

  9. 如何处理网络丢包故障?—Vecloud微云

    我们在使用ping命令对目的站进行询问时,数据包由于各种原因在信道中丢失的现象,就是网络丢包.网络丢包是网络中常见的故障之一,它会引起网速降低甚至造成网络中断. 以下是几种常见的网络丢包故障现象及处理 ...

最新文章

  1. 资源 | 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
  2. window10 运行linux软件,现在你可以直接在Windows 10平台上运行带用户界面的Linux桌面软件...
  3. mysql share 字体 中文_MySQL 存储生僻字/不常见繁体字解决方案(未完全解决)
  4. mysql数据库utf-8编码
  5. mvc 实例 php,来写一个简单的PHP MVC结构
  6. 如何用好云原生数据湖?
  7. 如何查看 .NET Core 3.1 源代码
  8. SharePoint 编程指南(转)
  9. 56 - I. 数组中数字出现的次数
  10. C# httpcookie asp.net中cookie的使用
  11. 原型 / 构造函数 / 实例/原型链
  12. web优化之-asp.net js延迟加载 js动态合并 js动态压缩
  13. drupal7 payment module:把支付form元素注入到form中
  14. linux kprobe rootkit学习
  15. 四川省成都市谷歌高清卫星地图下载
  16. 铁路车辆工程使用计算机软件,铁路车辆工程论文
  17. Qt QPainter CompositionMode解读及图片透明度设置
  18. 读书笔记2014第6本:《The Hunger Games》
  19. 【一起去北碚玩吧】->【我们从北碚回来了】
  20. scrapy爬虫入门

热门文章

  1. MG100-M101-UNT400B-MG101等_Hi3798MV100_当贝纯净桌面-卡刷固件包
  2. mysql 列转行 unpivot_Spark SQL中列转行(UNPIVOT)的两种方法
  3. echart图表 和弦关系图 悲惨世界人物关系图的使用及配置项 修改旋转角度 顺时针旋转
  4. 今天小暑是什么时间_小暑是几月几日星期几2020 是什么季节
  5. VS2010动态库dll的编译和MFC调用使用教程64位32位
  6. PageHelper使用注意
  7. 干货 | 浅谈携程大住宿研发效能提升实践
  8. 优质的感恩节海报模板素材推荐,不容错过
  9. js 条码枪扫描_js 获取扫码枪信息
  10. 07--SpringBoot之数据库JPA(CRUD)