ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-07 17:07:18  阅读:179  来源: 互联网

标签:01 yuv 篇文章 File 后台 推送 花屏 fileOutputStream


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

一、遇到的问题

最近在调试usbcamera功能,需要支持本地录像+后台监控,也就是后台需要拿到实时的视频流。

流程都调通了,这不,遇到个问题,pc端后台监控,播放的视频存在花屏现象(如下图所示)。

花屏视频

二、分析问题

1)yuv数据格式,数据大小是否正常?

这个打印下日志就可以确认,我遇到的确认是正常的。

2)本地流是否正常?

这个其实就是确认在流送达后台之前,流是否是正常的。先排除是本地的原因,还是后台的原因。

下面讲的就主要是如何去确认流是否正常?

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

image.png

  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();
        }
    }复制代码

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

我使用的是Elecard YUV Viewer工具,这个工具可以播放yuv文件。

Elecard YUV Viewer工具

使用Elecard YUV Viewer播放保存的yuv流文件,发现也是存在和pc同样的花屏问题。那就是终端设备的流在推送给后台之前本身就存在问题。

异常的流文件

我遇到的这个问题,是我把流数据的回调,放在了单独的handlerThread中推送给后台,导致出现的这个花屏问题,我怀疑是流数据没有按帧顺序推送导致。

正常的流文件

下面是去掉在handlerThread中推送流数据,pc端看到的视频是正常的了。

pc端看到的正常视频


标签:01,yuv,篇文章,File,后台,推送,花屏,fileOutputStream
来源: https://blog.51cto.com/15152644/2690501

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有