关于 AVExportSession 和 AVVideoComposition 的问题

[复制链接]
93 3
我现在遇到的问题是 在系统相册里的拿出来的 视频资源无法使用 AVExportSession 导出,
首先,我在相册页面选中视频,获取了视频资源地址,然后到了裁剪页面,这里我用AVExportSession 第一次导出视频(我用了 AVVideoComposition 来 调整视频方向。
当裁剪和调整方向完毕,成功导出新的视频地址,到了下个页面 使用 AVVideoComposition 为视频添加滤镜,然后再导出视频,但是这个时候 就会报错

Error Domain=AVFoundationErrorDomain Code=-11841 "Operation Stopped" UserInfo={NSLocalizedFailureReason=The video could not be composed., NSLocalizedDescription=Operation Stopped, NSUnderlyingError=0x1c405da90 {Error Domain=NSOSStatusErrorDomain Code=-17390 "(null)"}}


let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
exportSession?.outputFileType = AVFileType.mov
exportSession?.outputURL = URL(fileURLWithPath: path)
exportSession?.shouldOptimizeForNetworkUse = true
exportSession?.videoComposition = videoComposition

exportSession?.exportAsynchronously {
DispatchQueue.main.async {
if exportSession?.status == .completed {
completeHandler(path, nil)
} else {
completeHandler(nil, exportSession?.error)
}
}
}


当我把 这句代码注释掉,就可以导出?

exportSession?.videoComposition = videoComposition


有没有大神解答

举报 使用道具

回复

3 个评论

FabxokJat  新手上路  发表于 2019-3-13 04:53:08  | 显示全部楼层
我现在遇到的问题是 在系统相册里的拿出来的 视频资源无法使用 AVExportSession 导出,
首先,我在相册页面选中视频,获取了视频资源地址,然后到了裁剪页面,这里我用AVExportSession 第一次导出视频(我用了 AVVideoComposition 来 调整视频方向。
当裁剪和调整方向完毕,成功导出新的视频地址,到了下个页面 使用 AVVideoComposition 为视频添加滤镜,然后再导出视频,但是这个时候 就会报错

Error Domain=AVFoundationErrorDomain Code=-11841 "Operation Stopped" UserInfo={NSLocalizedFailureReason=The video could not be composed., NSLocalizedDescription=Operation Stopped, NSUnderlyingError=0x1c405da90 {Error Domain=NSOSStatusErrorDomain Code=-17390 "(null)"}}


let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
        exportSession?.outputFileType = AVFileType.mov
        exportSession?.outputURL = URL(fileURLWithPath: path)
        exportSession?.shouldOptimizeForNetworkUse = true
        exportSession?.videoComposition = videoComposition
        
        exportSession?.exportAsynchronously {
            DispatchQueue.main.async {
                if exportSession?.status == .completed {
                    completeHandler(path, nil)
                } else {
                    completeHandler(nil, exportSession?.error)
                }
            }
        }


当我把 这句代码注释掉,就可以导出?

exportSession?.videoComposition = videoComposition


有没有大神解答

举报 使用道具

回复
MadvakoEdilm  新手上路  发表于 2019-3-13 04:58:51  | 显示全部楼层
已经解决了,但是不知道什么原因

我把 AVAssetExportPresetHighestQuality 改成 AVAssetExportPresetPassthrough 就好了
能有人解答下 他们有什么区别吗

举报 使用道具

回复
wtknt  新手上路  发表于 2019-3-13 05:53:12  | 显示全部楼层
还没解决。。。只是能 export 了 但是 CIFilter 的滤镜全没了

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表