我正在创建一个视频文件,其上面有动画图像。我跟踪导出进度和状态,但在导出进度达到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
属性保持为空。
答案 0 :(得分:0)
显然,视频文件本身存在问题。我从Apple samples下载了一个示例视频sample_iPod.m4v
,所有内容都按预期工作。奇怪的是,我的文件和样本都是用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,错误:无]
...