如何使用iOS sdk从视频中获取所选帧的开始和结束时间?

时间:2014-08-05 12:13:21

标签: ios uiimagepickercontroller uivideoeditorcontroller avassetimagegenerator

我想做什么:

我正在尝试获取所选框架的开始和结束时间,如下面的附件: enter image description here

到目前为止我做了什么:

  1. UIImagePickerController :已实施并发现代表中开始结束时间将不会返回 如果视频输入是从相册中选择的,那么“didFinishPickingMediaWithInfo”。也得到了Apple团队的确认。
  2. 尝试使用“ UIVideoEditorController ”,最终无法获得开始和结束时间。
  3. 计划尝试使用“ AVAssetImageGenerator ”生成缩略图并以编程方式处理“标记或标记” 选择框架和 AVPlayer 可以像在IOS电影播放器​​中一样进行即时预览。(如附件中所示)。 但是它非常不安和复杂,并且不确定它的处理速度。
  4. 我想知道的事情:

    1. 除了上述三种技术外,还有其他方法可以实现视频修剪功能吗? 来自Apple SDK的直接api?
    2. 任何人都可以为基于“AVAssetImageGenerator”的视频修剪器提供参考链接或示例代码吗?

1 个答案:

答案 0 :(得分:1)

如果您使用AVPlayer,则可以使用

获取播放器资产的开始和结束时间
self.player.currentItem.asset.duration;

然后使用自定义滑块选择开始帧和结束帧,并转换相对于总持续时间和滑块长度以及滑块值的值。

一旦你有一个大概的开始和结束时间框架,按以下步骤进行

AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:player.currentItem.asset];



    CGImageRef cgIm = [generator copyCGImageAtTime:player.currentTime 
                                        actualTime:&actualTime 
                                             error:&error];
    UIImage *image = [UIImage imageWithCGImage:cgIm];