我正在使用 JB 的硬件媒体编解码器。我正在尝试对视频进行编码并对其进行解码并使用编解码器(视频/avc格式)显示...
我正在使用两个按钮来“开始”和“停止”视频渲染。第一次,当我渲染视频时,它会正确显示。当我第二次启动视频时,它没有显示并引发以下错误:
“不在 AVI 模式下”
我复制粘贴开始和停止按钮的代码片段。
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);
在日志中我得到
电子/(271):
E/( 271):不在 avi 模式
电子/(271):
E/( 271): 不在 avi 模式