gpt4 book ai didi

objective-c - 在 Objective-C (iOS) 中转码​​视频的最佳方式是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:44:59 26 4
gpt4 key购买 nike

我想根据设备和应用程序中的设置,将视频转码为特定的视频格式。例如,如果用户有 iPhone 4S 并在我的应用程序中选择中等设置,我想在开始处理之前将视频转换为 540p。如果他选择高那么我想转码到 720p。

我可以逐帧读取视频,调整大小并保存到光盘,但这似乎不是很有效。对我可以提供给视频处理库的视频进行转码的最简单、最快速的方法是什么?

我已经尝试在我的 UIImagePickerController 上使用视频质量设置,但似乎它无法正常工作,即使我将它设置为 UIImagePickerControllerQualityTypeIFrame960x540 我的视频输出为 720p(640x480 可以工作,但我需要更精细)。

最佳答案

您可能想看看 AVAssetExportSession,它使重新编码视频变得相当简单。我认为它也尽可能像 AVFoundation 的其余部分一样得到硬件支持:

https://developer.apple.com/library/ios/#DOCUMENTATION/AudioVideo/Conceptual/AVFoundationPG/Articles/01_UsingAssets.html

请注意,它永远不会使视频比现在更大,因此不能保证您获得您请求的输出大小。假设您有一个 ALAsset 实例,以下代码可能是您想要的开始:

- (void)transcodeLibraryVideo:(ALAsset *)libraryAsset 
toURL:(NSURL *)fileURL
withQuality:(NSString *quality) {
// get a video asset for the original video file
AVAsset *asset = [AVAsset assetWithURL:
[NSURL URLWithString:
[NSString stringWithFormat:@"%@",
[[libraryAsset defaultRepresentation] url]]]];
// see if it's possible to export at the requested quality
NSArray *compatiblePresets = [AVAssetExportSession
exportPresetsCompatibleWithAsset:asset];
if ([compatiblePresets containsObject:quality]) {
// set up the export
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]
initWithAsset:asset presetName:quality];
exportSession.outputURL = fileURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
// run the export
[exportSession exportAsynchronouslyWithCompletionHandler:^{
switch ([exportSession status]) {
case AVAssetExportSessionStatusFailed:
//TODO: warn of failure
break;
case AVAssetExportSessionStatusCancelled:
//TODO: warn of cancellation
break;
default:
//TODO: do whatever is next
break;
}
[exportSession release];
}];
}
else {
//TODO: warn that the requested quality is not available
}
}

例如,您可能希望为 540p 传递 AVAssetExportPreset960x540 质量,为 720p 传递 AVAssetExportPreset1280x720 质量。

关于objective-c - 在 Objective-C (iOS) 中转码​​视频的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9349022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com