AssetWriter Error -12915 错误解决办法

原文转载自:https://diablo4ever.wordpress.com/2017/05/16/avassetwriter报的那些错

 

 

最近项目中用到了视频压缩的地方,查找到用AVFoundation的AVAssetReader等类可以解决视频压缩的码率等问题,当我使用之后,一切都没问题,但是一旦在压缩的途中退出页面,我没有执行AVAssetWriter finishWritingWithCompletionHandler:这个方法超过3次以上,那么拼接缓冲区视频的方法[AVAssetWriterInput appendSampleBuffer:sampleBuffer];就会返回NO,无法拼接缓冲区视频,这就代表无法继续压缩视频。

而且这个问题只有退出APP重新进入才可以解决,从内存中销毁AVAssetWriter对象,重新创建都无法解决这个问题,我打印出来AssetWriter这个类的error属性,里面是一堆中英混杂的错误信息,我真是看的一脸懵逼,:
 

AssetWriter Error -12915

Error Domain=AVFoundationErrorDomain Code=-11840 “无法编码” 
UserInfo={NSUnderlyingError=0x170846330 {Error Domain=NSOSStatusErrorDomain Code=-12915 “(null)”}, 
NSLocalizedFailureReason=此媒体所需的编码器正忙。
(The encoder required for this media is busy.), 
NSLocalizedRecoverySuggestion=停止其他所有对媒体加密的操作,然后再试一次。
(stop any other actions that encode media and try again.),
 NSLocalizedDescription=无法编码}

直到遇到上面的大牛的Blog,里面说明了遇到问题的情况,我才解决这个问题:

把AVAssetWriter设置为全局变量,确保在你退出页面,或者任何奇奇怪怪操作的时候,首先执行AVAssetWriter 的finishWritingWithCompletionHandler方法!这样再次执行[AVAssetWriterInput appendSampleBuffer:sampleBuffer]就不会报错了,具体细节还需要花些时间去看,但这真是个令人蛋疼的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值