特定视频的 AVAssetExportSession 失败

3

我正在尝试使用AVAssetExportSession和AVMutableComposition将视频和音频合并。我的代码适用于大多数情况(音频和视频)。但是对于某些视频,它会失败。这些失败的视频在QuickTime播放器和其他播放器上正常工作。即使没有任何音频合并选项,当我仅导出时,这些失败的视频也会失败(给出的代码如下)。

[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}

我这里不会贴出完整的合并代码,因为即使是上面的基础代码也无法处理提到的视频。

希望您能够提供有关错误代码的任何提示或建议。非常感谢您的帮助。


看起来-12769是kCMBufferQueueError_InvalidBuffer - Rhythmic Fistman
谢谢信息!请问你从哪里得到的? - Xys
@xys 我会在 https://osstatus.com 上搜索,或者使用 grep 命令查找 CoreMedia/CoreAudio/AVFoundation 的头文件。 - Rhythmic Fistman
3个回答

2
我使用AVAssetExportPresetPassthrough导出预设解决了这个问题...
let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetPassthrough)

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


仍然对我不起作用。 - famfamfam

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

0

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


有一个与您的问题类似的帖子,请先检查 http://stackoverflow.com/questions/24576808/osstatus-error-12769 - lee jason
我有同样的问题,对我来说编码器是“Lavf57.61.100”。 - Xys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接