JB の Hardware Media Codec を使用しています。ビデオをエンコードしてデコードし、コーデックを使用して表示しようとしています (ビデオ/AVC 形式)...
ビデオのレンダリングを「開始」および「停止」するために 2 つのボタンを使用しています。初めて、ビデオをレンダリングすると、正しく表示されます。ビデオを 2 回目に開始すると、ビデオが表示されず、次のエラーがスローされます。
「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();
}
}
ビデオのレンダリングを手伝ってください。
注 : デコーダーで受信したデータは有効です...データは、Beyond Compare ツールを使用してチェックされます
outputBufferIndex に -1 を取得しています
int outputBufferIndex = decoderMediaCodec.dequeueOutputBuffer(bufferInfo, 0);
ログで私が得る
E/( 271):
E/( 271):avi モードではない
E/( 271):
E/( 271): avi モードではありません