我有低质量转换的简单视频压缩代码。我正在使用IOS-4.2.1在iphone 4中测试我的代码。问题是当我在没有断点的设备上测试我的代码时代码无法创建视频(它只创建一个零kb文件或空文件)但是当我逐行使用断点检查这段代码时,它会生成一个完美的压缩视频,也可以在mac中的quicktime播放器上运行。压缩后我制作了这个视频文件的zip。
NSURL *videoURL=[[self.videourlarray objectAtIndex:i] valueForKey:UIImagePickerControllerReferenceURL];
NSURL *outputURL = [NSURL fileURLWithPath:videoFile];
[[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetLowQuality];
exportSession.outputURL = outputURL;
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
{
NSLog(@"Export Complete %d %@", exportSession.status, exportSession.error);
[exportSession release];
}];
感谢任何帮助...
答案 0 :(得分:6)
我认为你需要确保你没有弄乱线程..(AVFoundation指南说导出器不能保证在任何特定线程上运行。)
使用这样的块。
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Export Complete %d %@", exportSession.status, exportSession.error);
});
}];
我个人会从块中调用一个委托,但我认为你的简单日志声明只适用于这个例子,你已经知道了:)
答案 1 :(得分:1)
我遇到了同样的问题。经过几个小时的调试,我发现音频文件的扩展名为.M4A
全部大写。小写字母将解决问题