美文网首页iOS开发那些事
iOS 视频导出Code=-11800 解决方式集合

iOS 视频导出Code=-11800 解决方式集合

作者: KeyboardDirver | 来源:发表于2019-10-06 13:25 被阅读0次

    先看错误

    Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成" UserInfo={NSLocalizedFailureReason=发生未知错误(-12780), NSLocalizedDescription=这项操作无法完成, NSUnderlyingError=0x2836c4090 {Error Domain=NSOSStatusErrorDomain Code=-12780 "(null)"}}
    _exporter.outputFileType = AVFileTypeQuickTimeMovie;

    在使用 AVAssetExportSession 导出视频时会出现上面-11800报错,详细错误信息和错误码可能会有所不同,倒是描述的都是让人摸不到头脑,下面是我在遇到此问题时找到的解决方案和我自己解决问题的流程

    错误原因总结及【解决链接】

    1、生成URL的方法错误
    错误的使用 [NSURL URLWithString:@"http://haha."];
    使用本地资源应该使用 [NSURL fileURLWithPath:@""];
    2、文件路径错误
    文件路径错误
    另一个路径错误的
    2、视频内容错误(这个不清楚具体原因)解决方法
    使用AVMutableComposition 重新合并视频轨道和音频轨道
    AVAssetExportSession导出MP4视频失败
    3、这个错误是由于append buffer前后的时间差必须大于等于所设置的1/timescle(或者大于1.0/600?),不知道是不是由于timescale引起的,反正判断了一下前后两帧的时间差如果小于1.0/timescale这一帧我就丢掉了,结果没有错误发生,合成完成!
    buffer设置错误
    4、没有音轨有问题
    视频没有音轨
    5、这个是我遇到的问题也是下面我要描述的问题

    问题描述 我们自己iOSapp 拍摄的视频上传到服务器添加水印后加载后使用AVAssetExportSession导出会随机出现上面的错误。安卓上传视频也会导出失败。在上传后台之前的视频时可以使用AVAssetExportSession导出的。设置视频质量只有low质量的可以导出,middle和heigh质量都会出现问题
    解决问题思路

    1、AVAssetExportSession 最基础的方式导出,不添加其他对音轨视频轨道的操作直接导出。结果导出失败。
    2、查看视频信息


    原始视频信息.png 水印视频信息.png

    在对比网上视频拼接代码时发现抛弃音轨可以对视频导出

    视频编码设置有不同 音频声道和时间有不同
    我去掉了对原视频音轨的添加,只添背景音。发现可以导出。(此处猜测时音频问题)

    在测试代码时无意间添加如下代码

    AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
    

    仅仅是添加不需要对compositionAudioTrack做别的操作
    视频可成功导出
    导出成功的视频信息与上面的不是同一个视频(声道是2声道了)


    处理成功的视频信息与上面的视频不是同一个.png

    把问题都整理了一遍希望有遇到相同问题的朋友可以在这找到解决问题的答案,写完这篇文章回家,给个赞吧,比心,biu biu ~~

    相关文章

      网友评论

        本文标题:iOS 视频导出Code=-11800 解决方式集合

        本文链接:https://www.haomeiwen.com/subject/cmgsyctx.html