2

我正在创建一个带有动画图像的视频文件。我跟踪导出进度和状态,但是在导出进度达到 1.0 完成回调后不会调用,并且导出状态仍然等于“AVAssetExportSessionStatusExporting”。

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:movieAsset presetName:AVAssetExportPresetMediumQuality];
self.session = exportSession;
[exportSession release];
session.videoComposition = self.videoComposition;
NSString *filePath = NSTemporaryDirectory();
NSString *fileName = [[@"Output_" stringByAppendingString:number] stringByAppendingString:@".mov"];
filePath = [filePath stringByAppendingPathComponent:fileName];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
    [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
}
session.fileLengthLimit = 1024 * 1024 * 10;
session.outputURL = [NSURL fileURLWithPath:filePath];
session.outputFileType = AVFileTypeQuickTimeMovie;
[session exportAsynchronouslyWithCompletionHandler:^{
    dispatch_async(dispatch_get_main_queue(), ^{
        [self exportDidFinish];
    });
}];

它实际上是在创建一个不可读的输出文件。我想看到一些错误消息,但error导出会话的属性保持为空。

4

1 回答 1

0

显然,视频文件本身存在问题。sample_iPod.m4v我从 Apple示例中下载了一个示例视频,一切都按预期工作。奇怪的是我的文件和样本都是用 H.264 编码的。让我感到困惑的是,没有显示任何错误 - 无论是在控制台中还是在对象的error属性中AVExportSession

2013-07-02 12:56:06.521 测试 [2330:907] 导出运行 - [进度:0.838969,错误:无]

2013-07-02 12:56:09.020 测试 [2330:907] 导出运行 - [进度:0.932188,错误:无]

2013-07-02 12:56:11.519 测试 [2330:907] 导出运行 - [进度:0.999630,错误:无]

2013-07-02 12:56:14.023 测试 [2330:907] 导出运行 - [进度:1.000000,错误:无]

2013-07-02 12:56:16.519 测试 [2330:907] 导出运行 - [进度:1.000000,错误:无]

...

于 2013-07-02T10:00:17.540 回答