共计 1200 个字符,预计需要花费 3 分钟才能阅读完成。
熟话说,授人以鱼不如授人以渔,这里记录的是在理论我的项目上,我遇到问题时是如何进行排查解决的,给大家提供个思路参考~
一、遇到的问题
通过 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/dow…
自己从事 Android Camera 相干开发已有 5 年
目前在深圳下班
欢送大家关注我的微信公众号“小驰笔记”
大家一起学习交换
——– 2021.02.26 深圳 15:17