MediaMuxer Stop抛异常崩溃

在Android开发中,使用MediaMuxer进行多媒体文件录制时,遇到停止(stop)操作抛出IllegalStateException。崩溃日志显示与MediaCodec编码器和codec特定数据有关。错误提示'initAddtionalStyle default'和'Missing codec specific data'表明问题可能在于MediaMuxer.addTrack的调用时机。解决方法是在MediaCodec开始编码并返回dequeueOutputBuffer后调用addTrack。
摘要由CSDN通过智能技术生成

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();
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值