use*_*946 3 avfoundation ios avplayer photokit
我正在尝试播放慢动作视频(由用户的iPhone拍摄)AVPlayer.
我正在检索AVAsset一个PHAsset来自选择器的请求:
[manager requestAVAssetForVideo:PHAsset
options:videoRequestOptions
resultHandler:^(AVAsset * avasset, AVAudioMix * audioMix, NSDictionary * info) {}];
Run Code Online (Sandbox Code Playgroud)
问题是一旦它播放,我得到这个错误:
-[AVComposition URL]: unrecognized selector sent to instance 0x138d17f40
Run Code Online (Sandbox Code Playgroud)
但是,如果我在管理器请求中设置此选项,它将以120/240fps的正常速度视频播放,并且不会崩溃:
videoRequestOptions.version = PHVideoRequestOptionsVersionOriginal;
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?默认version属性PHVideoRequestOptionsVersionCurrent包含慢动作,用户编辑和修剪等.
我想播放那个视频版本.谢谢
事实证明,慢动作视频传递为AVComposition.
您可以将其导出到视频文件/ URL中,然后像处理任何其他视频一样处理它.
解决方案:https://overflow.buffer.com/2016/02/29/slow-motion-video-ios/
//Output URL
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths.firstObject;
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"mergeSlowMoVideo-%d.mov",arc4random() % 1000]];
NSURL *url = [NSURL fileURLWithPath:myPathDocs];
//Begin slow mo video export
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = url;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.shouldOptimizeForNetworkUse = YES;
[exporter exportAsynchronouslyWithCompletionHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (exporter.status == AVAssetExportSessionStatusCompleted) {
NSURL *URL = exporter.outputURL;
NSData *videoData = [NSData dataWithContentsOfURL:URL];
// Upload
[self uploadSelectedVideo:video data:videoData];
}
});
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2512 次 |
| 最近记录: |