MediaCodec解码h264码流[复制链接]

MediaCodec解码h264码流后用surfaceView直接显示,出现严重的花屏和马赛克问题,查阅各种资料依然无果,已困扰快两周了,,求大神帮忙,万分感谢
934777968@qq.com

chen52591 389查看 · 2回复 · 2018-11-26 15:59 有用(0
共2个回答
lilongfei0504 2018-11-30 16:29 回复

出现花屏,说明你解码的地方出现问题了, 你需要确认你的264 数据包,根据你们自己的协议 你解析的是否正确。
可能出现的问题:

  1. 你接收264数据后,解码前的处理需要了解你们数据量传输协议,并对照,通过log看看你数据处理的是否正确。因为有可能 进行解码的数据并不完整,或者有多余的。

  2. 可能解码器就不对,你需要确认你的解码器代码是否正确。

xkxtmy 2019-1-10 10:13 回复

会不会是H264转码的时候出错了呢,Camera采集到的原始数据是NV21的,在转码成H264时需要先将NV21格式转换为NV12格式
private void NV21ToNV12(byte[] nv21, byte[] nv12, int width, int height) {

    if (nv21 == null || nv12 == null) return;
    int framesize = width * height;
    int i = 0, j = 0;
    System.arraycopy(nv21, 0, nv12, 0, framesize);
    for (i = 0; i < framesize; i++) {
        nv12[i] = nv21[i];
    }
    for (j = 0; j < framesize / 2; j += 2) {
        nv12[framesize + j - 1] = nv21[j + framesize];
    }
    for (j = 0; j < framesize / 2; j += 2) {
        nv12[framesize + j] = nv21[j + framesize - 1];
    }
}
需要登入后才可以评论 登录 | 立即注册