zak*_*ces 4 video objective-c avfoundation ios avassetexportsession
我正在尝试从UIImagePickerController创建的源视频中导出.mov文件.问题是输出文件AVAssetExportSession创建的只有668个字节.它为什么失败?我的代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSURL *imagePickerVideoURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSString *filename = @"vid1.mov";
AVAsset *video = [AVAsset assetWithURL:imagePickerVideoURL];
AVAssetExportSession *exportSession
= [AVAssetExportSession exportSessionWithAsset:video presetName:AVAssetExportPresetMediumQuality];
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
exportSession.outputURL = [pathToSavedVideosDirectory URLByAppendingPathComponent:filename];
NSLog(@"processing video...: %@", exportSession);
[exportSession exportAsynchronouslyWithCompletionHandler:^{
NSLog(@"done processing video!");
}];
}
Run Code Online (Sandbox Code Playgroud)
我猜它是因为exportSession没有保留在内存中,因此在didFinishPickingMediaWithInfo完成之后(在导出会话完成处理程序运行之前)被杀死.
存储exportSession到@property或更改完成处理程序以复制引用,exportSession如下所示:
[exportSession exportAsynchronouslyWithCompletionHandler:^{
if (AVAssetExportSessionStatusCompleted == exportSession.status)
{
NSLog(@"done processing video!");
}
}];
Run Code Online (Sandbox Code Playgroud)
小智 1
exportSession 有一个“error”属性,您可以检查该属性以确定错误是什么。很多时候,这些错误并不是特别有帮助,但它至少是一个起点。
请注意,我发现 .mov 文件存在问题,其中的编解码器不受 AVFoundation 支持。
| 归档时间: |
|
| 查看次数: |
4979 次 |
| 最近记录: |