音视频问题汇总--视频花屏

最近工作上碰到两个问题,都是播放时候出现花屏现象,因此汇总一下,方便后续防止踩坑。

 

 

问题一

第一个是设备播放特定文件时出现花屏现象。

碰见类似问题,一般会进行问题怀疑点预设,初步猜想可能发生的原因:

第一:文件问题本身问题:包括文件损坏、头信息损坏等;

第二:参数问题:包括视频参数、格式档位、帧率等;

第三:显示问题:yuv格式、surface相关内容。

所以逐步击破各个猜想,摸清问题产生的原因,完成问题修复。

1.1 文件排查

第一步确认该文件是否正常,确认不是格式导致的播放问题。

通过MediaInfo工具查看,以及atom工具,信息没问题,其中标注一下可能怀疑的点。

之后测试相同的文件,推到另一台设备中,用系统自带的播放器进行播放,显示正常。

1.2 格式排查

之后查看硬件厂商的官方datasheet中支持的视频编解码格式,应该是支持的:

http://opensource.rock-chips.com/images/4/49/Rockchip_RK3288_Datasheet_V2.7-20191227.pdf​opensource.rock-chips.com

1.3 播放器排查

另一方面,采用其他的播放器(万能播放器,内核是IJKMEDIA)播放该文件,确认播放器是否有问题:

采用系统自带播放器播放其他的MP4文件,显示正常

看到这里是不是觉很有意思了?继续盘它。

1.4 log分析

我们发现异常时(不管是默认播放器和万能播放器),log都是显示如下内容:

之后又下载了VLC for Android和其他的播放器,显示硬解时,会有崩溃信息:

好像看到一个异常,至少现在有线索了。

1.5 解码排查

之后用VLC for Android将硬件加速关闭后,播放正常了(这时候发现VLC功能强大,这个也是一直再找的一个功能,可以用户自己决定是否关闭硬件编解码、是否只用软件解码,只是为了验证功能)

哇咔咔,见证奇迹的时候出现了,竟然播放正常了,所以软解时候是正常的。

综上,可以判断应该是硬件厂商的某一个库异常导致硬解有问题了

1.6 硬件排查

通过恢复出厂、刷机都不能恢复正常播放、相同版本换一台机器就正常了,所以更加明确定位该问题和硬件或者硬解库有关系。

之后硬件童鞋帮助更换CPU、主板逐个模块确认,原来是主板上解码模块异常了,更换后正常了,最终问题得到解决。

 

总结:

碰到类似花屏问题:首先怀疑是解码异常、逐步排查收发数据是否正常(通过抓包可以查看)、解码(导出解码数据)、显示(送surface前导出)、以及通过其他的播放器确认软解、硬解是否正常等手段排查。

 

 

问题二

我们APP在客户现场出现视频不完整、花屏等问题,而且是必现的,这个现象非常严重了。

这个任务紧急、重要,必须短时间内解决,一次抽调精干大佬,一起攻克。

2.1 收集信息

最初介入时,研发大佬以及有了初步问题分析:

  1. 客户到两台欧洲云服务器,速度在5~8 MBit;

  2. 国内到欧洲云的速率,在50Mbps;

  3. 客户到欧洲云的实际丢包情况比较严峻,基本每秒必定丢包,没有不丢包的,这种简单的ARQ机制救不回来这么多数据;

  4. 非常多的ARQ容易导致网络风波

碰见该类类似问题,初步猜想可能发生的原因:

第一:传输端问题:包括传输端端口异常、数据采集异常、编码异常等;

第二:网络链路问题:包括网络带宽、网络状态、网络协议等;

第三:流媒体服务器问题:包括服务器处理能力、服务器转发转码异常、服务器端口异常等;

第四:接收端问题:包括APP自身问题、手机WIFI异常、手机解码异常、手机显示异常等内容。

2.2 抓包排查

首先客户有提供了一个抓包,然后查看发现,有非常多的丢包,而且做了ARQ重传请求:

正常情况下,做了这么多ARQ请求后,会显示完整视频出来才对,然而现场看现象越来越差,帧完全丢掉了。

2.3 链路排查

通过Iperf工具查看,当前tcp链路和udp链路带宽如下:

TCP链路状态:

UDP链路状态:

可以看出,客户现场带宽还是比较低的,这中网络条件是各种弱网对抗手段启动的前提条件,虽然后一定风险使得网络变差,但是还是会触发的。

2.4 APP端排查

为了更精确定位问题,重新查看抓包,发现所有的ARQ请求都是在云端和设备端发起的,为了验证该猜想,排查APP端的问题,重新抓取了APP端的抓包,显示将近APP端10+s的播放,APP仅仅只有两次ARQ请求,说明APP端的网络状态还不错,偶有丢包而已:

2.5 架构摸查

因为我们的架构是这样的,APP端服务器、服务器到被叫端是独立的。这样基本上是流媒体服务器架构的基本类型,让呼叫和被叫端分别相应自己的网络状态。不过对于实时通话影响会比较严重,也是我们之后要改进的地方。

所以进一步排查服务端的相关协议,发现如下现象:

 

因此导致被叫端和服务器之间网络拥塞了,导致即可app端信号非常好,也无济于事。

因此服务端的童鞋协助排查了该问题:ARQ的灵敏度做测试时被调整了,导致部署时短时间内发起比较多的ARQ请求,造成呼叫异常。将此次调整的参数回退后正常了。

虽然是服务端的童鞋的问题,出现不该有的错误。但是这个排查过程,以及客户现场的第一手网络链路数据资料的收集,仍然有很多可取之处,防止之后类似现象的发生。

 

总结:

呼叫流程中花屏问题需要分不同阶段,二分法逐步确定该问题发送的阶段,比如发送端、网络端、接收模块、解码模块、显示模块、不同的模块分析问题的方式是不一样,借用的工具也不一样,善于利用工具验证自己的猜想,更快的解决问题。

 

 

如果能读到这里,都是深度钻研的技术爱好者,想请您帮个忙:

如果内容对您有帮助,请您花一秒中时间点赞、关注;

如果觉得能够帮助他人,欢迎转发、转载;

您的支持是鄙人前进的动力,感谢您的持续关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619469.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Compose - 交互组合项

按钮 Button OutLinedButton带外边框、TextButton只是文字、IconButton只是图标形状。 Button(onClick { }, //点击回调modifier Modifier,enabled true, //启用或禁用interactionSource MutableInteractionSource(),elevation ButtonDefaults.elevatedButtonElevation( /…

各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

之前的一篇博客《网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient》,我们介绍了RTSP流的检测和分析工具EasyRTSPClient,可以说已经是深入了我的平时运维工作中了,当我们发现有任何RTSP源或者摄像…

PPStream、PPlive等播放器花屏之解决办法

PPStream、PPlive等播放器花屏之解决办法 解决方法1:打开“Windows Meida Player”播放器,找到“工具”->“选项”->“性能”->“视频加速”,把“完全”滑块放到中间(如果仍不行可调整到无),然后按…

传奇花屏Win10登陆游戏时花屏的解决方法

随着win10的流行,原来很多传奇版本不能适应,必竟传奇是一款比较老的游戏,很多电脑现在初装都已经是Win10了,win10系统,玩单机时点开始游戏就出现花屏,换分辩率800X600没有用。 Win10系统花屏是因为登陆器不…

用户观看视频业务出现花屏故障

组网情况 如图所示,Switch的一端和组播服务器相连,并且将GE1/0/0加入Eth-Trunk 0,另一端下挂用户终端,并且将GE1/0/2加入Eth-Trunk 1。在Switch上部署了组播业务,下挂用户终端可以进行视频点播。 现象描述 用户终端…

ffmpeg解码花屏

问题: 解码为YUV420转为Bitmap后显示在屏幕上时,有三分之二为花屏:如图: 首先用h264Visa分析帧: 已经读出了sps等信息,这些信在解码第一帧时被写入环境变量中,所以下边的帧不需要sps了 而且在…

《Zookeeper》源码分析(二十三)之 客户端的命令处理过程

目录 客户端的命令处理过程1. ZooKeeper.create()2. ClientCnxn.submitRequest()3. SendThread.run()4. ClientCnxnSocket.doTransport()5. SendThread.readResponse() 客户端的命令处理过程 以创建节点命令为例,整个过程流程如下: CliCommand命令在抽…

自己动手完成数据恢复

简易数据恢复 数据恢复数据恢复原理FAT文件系统 NTFS文件系统在NTFS文件系统中的原理分析对于文件删除有一段时间时: 基于软件的文件恢复总结 数据恢复 数据恢复是一个很大的概念,包括文件恢复,分区恢复,分区格式化恢复&#xff0…

深入探讨C存储类和存储期——Storage Duration

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…

巨人网络305亿并购海外棋牌类游戏公司审核遭暂停

雷帝网 乐天 8月10日报道 巨人网络今日发布公告,宣布2018年8月10日收到中国证监会通知,决定对公司本次发行股份及支付现金购买资产并募集配套资金暨关联交易事项(简称“本次重组”)暂停审核。 据《上市公司重大资产重组管理办法》…

家乡的一种棋牌游戏

进来无事,想起了家乡的一种棋牌游戏,只记得小时候玩觉得蛮有趣,呵呵,现在想起就有一种用程序实现它的冲动, 呵呵,有想法就行动了,鉴于此款游戏由多人组合才能进行,所以还是选择C/S结…

C#棋牌游戏(如斗地主)

C#棋牌游戏 需求代码块定义枚举定义Card类定义CardLibrary类*定义Player类Main函数中实现结果展示 需求 需要定义Card类,该类包含特征: 每张牌的名字; 花色:红心、方块、梅花、黑桃; 牌号:1- 10、J、Q、K、小王、大王定义牌库CardLibrary类,…

自助棋牌室

1项目模块:商家模块(店铺展示、包厢展示、订单、订单搜索、店铺搜索) 用户模块(登录、注册、预约、充值、更换头像、续单、退单) 2项目技术:前端:js、jquery、vue2、vue3、后端:jdbc、java、servlet、mybatis 3功能实现: I 登录功能实现: 主要通过前后端交互实现,前后端实现流…

算法通过村第四关-栈白银笔记|手写栈操作

文章目录 前言1. 栈的基础概要1.1 栈的特征1.2 栈的操作1.3 Java中的栈 2. 栈的实现(手写栈)2.1 基于数组实现2.2 基于链表实现2.3 基于LinkedList实现 总结 前言 提示:我自己一个人的感觉很好 我并不想要拥有你 除非你比我的独处更加宜人 --…

【问题解决】无法加载文件 C:\Users\PJW\AppData\Roaming\npm\hpm.ps1,因为在此系统上禁止运行脚本

问题: PS Y:\BearPi-HM_Nano> hpm dist hpm : 无法加载文件 C:\Users\PJW\AppData\Roaming\npm\hpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policie…

intellj 无法运行程序

RT 在写作业的时候,导入老师项目,但是无法执行文件。 在这里插入图片描述 在项目模块中,添加内容根。添加目标源文件夹,解决问题。

【报错】nrm : 无法加载文件 …路径… ,因为在此系统上禁止运行脚本。

原因:核心是power shell的安全策略,将 nrm 命令视为了不安全脚本,不允许执行。只需要放开权限就行。 解决:通过管理员权限运行power shell,然后输入命令 set-ExecutionPolicy RemoteSigned 示例: 选择“是”…

com.android.phone已停止运行怎么解决方法,com.android.phone进程意外停止/已停止运行的原因及解决方法...

com.android.phone已停止怎么解决?小编带来了com.android.phone进程意外停止解决方法,有机友表示当手机刷机或root后就会出现“进程com.android.phone已停止”提示,不妨试一试下文的解决方法哦~ --原因 出现这种情况表明你的手机运行环境出现了比较大的…

在运行Android程序出现“×××已停止运行”

在运行Android程序时出现“已停止运行”的情况,点击“重新打开应用”后又提示“屡次停止运行”, 发现在Logcat中有这么一行提示:“Caused by: java.lang.NullPointerException: Attempt to invoke virtual method android.view.View android.…

无法加载文件 ,因为在此系统上禁止运行脚本

1 问题 在打开cmd命令行文件或者某个shell时,运行某个文件失败,并且显示无法加载文件 ,因为在此系统上禁止运行脚本。可能是因为你当前的shell窗口权限不够导致,可以先打开管理员权限的shell之后,修改脚本运行的策略即…