我正在使用FDTake(对于这个问题不太重要,但仍然是)从照片中选择可以正常工作的视频。但是,我还希望能够编辑视频并将其长度限制为大约12秒。为此,我查看了广告连播的代码并将line 271更改为self.imagePicker.allowsEditing = true
,这已经导致我迄今无法解决的问题:左侧滑块的触摸(方框)是“关闭”。由于这是一个相当模糊的描述,我上传了一个视频,你可以找到它right here。
不幸的是,我完全不知道是什么引起了这个问题,我真的很感激这方面的一些帮助。我问FDTake的创建者,但显然他认为Apple需要解决这个问题(因为你可以在最近的一个封闭问题中看到)。
有人可以解释我如何解决这个问题以及导致问题的原因吗?
答案 0 :(得分:8)
一种可能的解决方案:选择视频,然后使用PryntTrimmerView
修剪视频您可以使用PryntTrimmerView库修剪视频。我在一个示例项目中实现了这个库。您可以从我的github repo Here
下载正在运行的示例项目加载随机视频按钮从设备的存储中加载随机视频(照片)。因此,至少需要存在一个视频文件
正在使用Avplayer来显示视频
这是完整视频
使用黑色手柄根据需要修剪视频
修剪视频
注意::句柄之间的最小允许距离在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
。