java.lang.IllegalStateException: Failed to stop the muxer
at android.media.MediaMuxer.nativeStop(Native Method)
at android.media.MediaMuxer.stop(MediaMuxer.java:225)
MediaMuxer在录制完成时调用stop接口抛异常崩溃,往上翻看崩溃日志有两行下面的错误
E/textview: initAddtionalStyle default
E/MPEG4Writer: Missing codec specific data
这个异常跟编码器有关,到网上查找资料,看别人写的代码,发现是调用MediaMuxer.addTrack的时机不对;
MediaMuxer.addTrack应该在编码器MediaCodec编码过程开始,dequeueOutputBuffer返回
INFO_OUTPUT_FORMAT_CHANGED状态时才调用
基本流程应该是(示意代码)
1.初始化各对象
_mediaMuxer = new MediaMuxer(...);
_videoEncoder = MediaCodec.createEncoderByType(...);
_videoEncoder.configure(...);
_videoEncoder.start();