小编ene*_*ene的帖子

MediaCodec getInputImage在某些设备上返回null

我想通过设置颜色格式使用MediaCodec进行编码COLOR_FormatYUV420Flexible.我的输入缓冲区是yuv420p.当我像这样输入缓冲区时:

    int inputBufferIndex = mEncoder.dequeueInputBuffer(-1);
    mCurrentBufferIndex = inputBufferIndex;
    if (inputBufferIndex >= 0) {
        ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
        //if(VERBOSE)
            Log.i(TAG,"pos:"+inputBuffer.position()+"\tlimit:"+inputBuffer.limit());
        inputBuffer.clear();
        return inputBuffer;
    }
Run Code Online (Sandbox Code Playgroud)

但有些设备颜色错误.所以我试试这个:

    int inputBufferIndex = mEncoder.dequeueInputBuffer(-1);
    mCurrentBufferIndex = inputBufferIndex;
    if (inputBufferIndex >= 0) {
        Image img = mEncoder.getInputImage(inputBufferIndex);
        if(img==null)
            return null;
        //mCurrentInputPlanes = img.getPlanes();
        ByteBuffer buffers[]={img.getPlanes()[0].getBuffer(),
                img.getPlanes()[1].getBuffer(),
                img.getPlanes()[2].getBuffer()};
Run Code Online (Sandbox Code Playgroud)

我将缓冲区填充到YUV通道.它可以在某些设备上运行.但是当调用getInputImage时,moto X pro和huawei P7变为null.文档说图像不包含原始数据.但它也提到COLOR_FormatYUV420Flexible自API 21以来的支持.所以我应该如何解决这个问题.

android encode mediacodec

23
推荐指数
1
解决办法
451
查看次数

标签 统计

android ×1

encode ×1

mediacodec ×1