写点什么

看完这篇文章,你起码对分析视频卡顿有点思路了 01

用户头像
小驰嘻嘻
关注
发布于: 2021 年 03 月 31 日

熟话说,授人以鱼不如授人以渔,这里记录的是在实际项目上,我遇到问题时是如何进行排查解决的,给大家提供个思路参考~


一、遇到的问题

通过 pc 后台查看手机端实时视频,出现先出现一帧画面,然后画面卡住,过个几秒钟后,画面才流畅。


二、分析问题

1)这个问题,我们首先需要排查下是手机端还是 pc 端的问题,不然直接丢给 pc 端同事排查,人家搞半天,最后发现是手机端的问题,那就尴尬了;

2)下面我们来看下如果排查是哪端出现的问题?

其实思路也很简单,我们需要本地保存一份 yuv 和 h264 流文件,然后借助软件查看,本地的流文件是否正常。如果有问题,那就是手机端的问题,否则,就可以让 pc 端的同事一起排查了。

i.如下面代码块所示,我在流推送给后台之前,把 yuv 流数据保存到本地文件里面;


ii、如下面代码块所示,把编码后的 h264 流保存下来


  private void saveStreamFile(byte[] buffer, String encodeFormat, int width, int height) {        String dirString = "/sdcard/videoStream/";        File dirFile = new File(dirString);
if (!dirFile.exists()) { dirFile.mkdirs(); }
File saveFile = new File(dirString + width + "_" + height + "Stream.yuv");
try { FileOutputStream fileOutputStream = new FileOutputStream(saveFile, true); fileOutputStream.write(buffer); fileOutputStream.flush(); fileOutputStream.close(); } catch (Exception e) { e.printStackTrace(); } }
复制代码

iii、流文件保存下来了,就是怎么查看的问题了。


我使用的是 ElecardStreamEyeTools 工具,这个工具可以播放 yuv 文件和 h264 流,后缀都需要修改成.yuv 才能查看。


如下图所示,yuv 流文件是选择 Elecard YUV Viewer 来查看,h264 流文件是选择 Elecard StreamEye 来查看。




3)上面一波操作后,是时候有个基本结论了。播放本地保存下来的 yuv 和 h264 流文件,发现都是流畅的,没有卡顿现象。而且发现 h264 流文件里面,是有够多的 i 帧的,这时候可以让 pc 端的同事一起排查了。


附:

ElecardStreamEyeTools 工具 下载地址:

https://download.csdn.net/download/Mr_ZJC/14947142

------------------------------------------------

本人从事 Android Camera 相关开发已有 5 年


目前在深圳上班


欢迎大家关注我的微信公众号“小驰笔记”


大家一起学习交流


-------- 2021.02.26 深圳 15:17


https://mp.weixin.qq.com/s?_biz=MzA3ODMzMTM1NA==&mid=2247484337&idx=1&sn=9f5586bd7cc5c27bba2d8daf4bf0a696&chksm=9f452f04a832a612a3ca0c8117c48bd8fe57c4061da40487e464706af97cc3081f9233dcbe3b&token=522091552&lang=zhCN#rd


发布于: 2021 年 03 月 31 日阅读数: 7
用户头像

小驰嘻嘻

关注

公众号: 小驰笔记 2021.03.30 加入

14年开始从事Android Camera相关软件开发 做过车载、手机、执法记录仪~

评论

发布
暂无评论
看完这篇文章,你起码对分析视频卡顿有点思路了 01