特定视频的AVAssetExportSession失败

时间:2017-03-15 06:48:31

标签: ios objective-c avfoundation avassetexportsession

我正在尝试使用AVAssetExportSession和AVMutableComposition将视频和音频合并在一起。我的代码适用于大多数情况(音频和视频)。但是有些视频失败了。失败的视频与快速播放器和其他播放器一起正常工作。即使没有任何音频录音选项(下面给出的代码),我只是导出时失败的视频失败。

[AVURLAsset assetWithURL:[NSURL fileURLWithPath:videoPath]];
AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:videoAsset presetName:AVAssetExportPresetHighestQuality];
NSURL    *exportUrl = [NSURL fileURLWithPath:exportPath];
if ([[NSFileManager defaultManager] fileExistsAtPath:exportPath])
{
    [[NSFileManager defaultManager] removeItemAtPath:exportPath error:nil];
}

_assetExport.outputFileType = @"com.apple.quicktime-movie";
_assetExport.outputURL = exportUrl;
_assetExport.shouldOptimizeForNetworkUse = YES;
[_assetExport exportAsynchronouslyWithCompletionHandler:
 ^(void ) {
     if (AVAssetExportSessionStatusCompleted == _assetExport.status) {
     } else if (AVAssetExportSessionStatusFailed == _assetExport.status) {
         NSLog(@"AVAssetExportSessionStatusFailed with error--%@", _assetExport.error);
     }
 }
 ];

我得到的错误如下......

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x600000053aa0 {Error Domain=NSOSStatusErrorDomain Code=-12769 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-12769), NSLocalizedDescription=The operation could not be completed}

我没有在这里发布合并的完整代码,因为上面的基本代码甚至没有提到所提到的视频。

任何有错误代码的提示或提示都会非常有用。提前谢谢。

3 个答案:

答案 0 :(得分:0)

首先检查用于压缩该视频的编解码器。

答案 1 :(得分:0)

例如,将导出预设设置为“AVAssetExportPreset1280x720”似乎可以解决问题。但在我的情况下,我真的需要保留原始分辨率,这不是一个选项..

答案 2 :(得分:0)

我使用AVAssetExportPresetPassthrough导出预设...

解决了这个问题
let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetPassthrough)

这应该使用导出文件中导入视频的分辨率。