美文网首页工作生活
关于手机中获取视频流原始文件(RGBX)中含有00000000无

关于手机中获取视频流原始文件(RGBX)中含有00000000无

作者: 搁浅的三刀流zoro | 来源:发表于2019-07-02 19:39 被阅读0次

    在某些手机中获取到的视频frame数据(原始数据RGBX,使用minicap 获取安卓视频流),转yuv/h264播放时会花屏。
    使用HexFiend(mac下)软件查看RBGX二进制原始文件,发现一段数据后会出现一段00000000的数据(192字节,不同手机可能不一样),将此数据删除后再转视频流,播放是正常的。
    研究jpg的源码,发现原来是显卡和CPU的内存对齐长度不一致导致的,竖屏的时候,显卡的frame从720对齐到768,所以就出现48*4=192字节的00000000,192不是固定值,跟分辨率有关的,显卡为了加速运算,自动扩充到他的对齐规则。

    修改minicap:
    struct Frame stride,根据其来操作

    SY_Rgb32ToI420((unsigned char*)frame->data, frame->width, frame->height, frame->stride, m_yuvBuf)
    Rgb32ToI420的时候pos计算修改如下 跳过无效内容
    curPos = (row * stride + col) * bpp;

    相关文章

      网友评论

        本文标题:关于手机中获取视频流原始文件(RGBX)中含有00000000无

        本文链接:https://www.haomeiwen.com/subject/nbhzcctx.html