视频修剪器的范围滑块触摸(方框)"关闭"

时间:2018-02-26 19:29:48

标签: ios swift uiimagepickercontroller

我正在使用FDTake(对于这个问题不太重要,但仍然是)从照片中选择可以正常工作的视频。但是,我还希望能够编辑视频并将其长度限制为大约12秒。为此,我查看了广告连播的代码并将line 271更改为self.imagePicker.allowsEditing = true,这已经导致我迄今无法解决的问题:左侧滑块的触摸(方框)是“关闭”。由于这是一个相当模糊的描述,我上传了一个视频,你可以找到它right here

不幸的是,我完全不知道是什么引起了这个问题,我真的很感激这方面的一些帮助。我问FDTake的创建者,但显然他认为Apple需要解决这个问题(因为你可以在最近的一个封闭问题中看到)。

有人可以解释我如何解决这个问题以及导致问题的原因吗?

3 个答案:

答案 0 :(得分:8)

一种可能的解决方案:选择视频,然后使用PryntTrimmerView

修剪视频

您可以使用PryntTrimmerView库修剪视频。我在一个示例项目中实现了这个库。您可以从我的github repo Here

下载正在运行的示例项目

加载随机视频按钮从设备的存储中加载随机视频(照片)。因此,至少需要存在一个视频文件

正在使用Avplayer来显示视频

这是完整视频

Complete video

  

使用黑色手柄根据需要修剪视频

修剪视频

Trimming the video

注意::句柄之间的最小允许距离在PryntTrimmerView.swift文件中使用私有属性指定。

/// The minimum duration allowed for the trimming. The handles won't pan further if the minimum duration is attained.
  public var minDuration: Double = 2

此函数使用此属性以及视频持续时间和帧来计算最小距离bw句柄

private var minimumDistanceBetweenHandle: CGFloat {
    guard let asset = asset else { return 0 }
    let distance = CGFloat(minDuration) * assetPreview.contentView.frame.width / CGFloat(asset.duration.seconds)
    print("minimum distance: \(distance)")
    return distance
  }

如果您遇到任何问题或需要更多信息,请告诉我

由于

答案 1 :(得分:5)

我直接使用UIImagePickerController重现了这个问题。

以下是一些可以从viewController调用的代码:

 let picker = UIImagePickerController()
 picker.allowsEditing = true
 picker.mediaTypes = [String(kUTTypeMovie)]
 picker.videoMaximumDuration = 12.0

 present(picker, animated: true, completion: nil)

我的猜测是,只有在屏幕左侧有一个内部视图的手势冲突,一旦你将左手柄拉到中间的某个位置,你可以直接访问它。

此外,这似乎并不新鲜:IOS 11 UIImagepicker for video how to move the slider to the bottom?

你能做的最好的事情就是向Apple提出雷达。

与此同时,您可以使用Awais Fayyaz建议的库作为解决方法。 (免责声明:我是图书馆的作者,所以我当然有偏见)。 另一种选择是在用户选择视频后使用UIVideoEditorController,该组件在iOS 11上没有任何问题。

答案 2 :(得分:0)

我们在这里遇到了同样的问题。当然,这与屏幕左侧的手势有关。

additionalSafeAreaInsets添加到UIImagePickerController时,效果会更好。

这是我们尝试的:

 let imagePickerController = UIImagePickerController()
 imagePickerController.allowsEditing = true
 imagePickerController.mediaTypes = [kUTTypeMovie as String]
 imagePickerController.videoMaximumDuration = 12.0
 imagePickerController.additionalSafeAreaInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)

我们最终使用了UIVideoEditorController