【问题标题】:JB Media codec decoder issueJB Media 编解码器问题
【发布时间】:2013-02-25 18:18:11
【问题描述】:

我正在使用 JB 的硬件媒体编解码器。我正在尝试对视频进行编码和解码,然后使用编解码器(视频/avc 格式)显示...

我使用两个按钮来“开始”和“停止”视频渲染。第一次,当我渲染视频时,它会正确显示。当我第二次启动视频时,它没有显示并引发以下错误:

“不在 AVI 模式下”

我复制粘贴开始和停止按钮的代码 sn-ps。

     public void Stop(){
    try {
        //stopping the decoder alone
        decoderMediaCodec.flush();
        decoderMediaCodec.stop();
        decoderMediaCodec.release();
         //Tried with various combination of flush(), stop() and release();
    } catch (Exception e) {
        e.printStackTrace();
    }

    public void Start(Surface view){
    try {
        decoderMediaCodec = MediaCodec.createDecoderByType(mime);//Initialize the decoder again
        MediaFormat format = MediaFormat.createVideoFormat(mime, mWidth, mHeight);
        format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
        format.setInteger(MediaFormat.KEY_BIT_RATE, bitrate);
        format.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat);
        format.setInteger(MediaFormat.KEY_FRAME_RATE, framerate);
        decoderMediaCodec.configure(format, view, null, 0);
        decoderMediaCodec.start();


    } catch (Exception e) {
        e.printStackTrace();
    }
}

请帮助我进行视频渲染。

注意:在解码器中接收到的数据是有效的...使用超越比较工具检查数据

我的 outputBufferIndex 得到 -1

    int outputBufferIndex = decoderMediaCodec.dequeueOutputBuffer(bufferInfo, 0);

在日志中我得到了

E/(271):

E/(271):不在 avi 模式

E/(271):

E/( 271): 不在 avi 模式下

【问题讨论】:

    标签: android video media codec decoding


    【解决方案1】:

    如果您在遇到问题时可以共享更多日志,那就太好了。根据您对问题的描述,您能否确认为您的第二次 Start 调用传递的 Surface 是有效句柄?

    如果您可以重建 android,可能在 Mediacodec.cpp 中启用日志跟踪会有所帮助,特别是 Mediacodec::setNativeWindow 方法。

    P.S:对于解码器,为什么要设置I帧间隔、比特率和帧率?

    【讨论】:

      猜你喜欢
      • 2010-10-25
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2017-11-05
      • 2018-02-19
      • 1970-01-01
      • 2020-11-28
      相关资源
      最近更新 更多