[英]How do I play a video which was selected from Gallery?
我有两个视图控制器:GetStartedViewController(根视图控制器)和 TrimVideoViewController。 我使用 PHPicker 从根视频中选择了一个视频,我需要在第二个 viewController 中播放该视频。 问题是,当我向 AVFoundation 提供 url 时,什么也没有发生。 我很茫然。
我已经搜索了 inte.net,但找不到这个问题的答案。
我看到一个单一的解决方案说我需要复制并保存到另一个目录并将该目录与 AVFoundation 一起使用。 它仍然没有用。
我还搜索了一个可以播放图库中的视频的框架,但大多数只能使用 HTTP 链接播放。
谁能帮我这个?
请注意,您已获取 URL 但未设置self.url = url
将vc..videoURL = url
= url 更改为以下内容应该有所不同
vc!.videoURL = url
好的,在咨询了更有经验的 iOS 开发人员后,我们发现 PHPicker 传递的 url 不适合 AVFoundation。 相反,我们编写了这个 function 来重新定位视频并使其适合 AVFoundation。
private func getVideo(from itemProvider: NSItemProvider, typeIdentifier: String) {
itemProvider.loadFileRepresentation(forTypeIdentifier: typeIdentifier) { url, error in
if let error = error {
print(error.localizedDescription)
}
guard let url = url else { return }
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
guard let targetURL = documentsDirectory?.appendingPathComponent(url.lastPathComponent) else { return }
do {
if FileManager.default.fileExists(atPath: targetURL.path) {
try FileManager.default.removeItem(at: targetURL)
}
try FileManager.default.copyItem(at: url, to: targetURL)
DispatchQueue.main.async {
let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "TrimVideooViewController") as? TrimVideooViewController
vc!.videoURL = targetURL
self.navigationController?.pushViewController(vc!, animated: true)
}
} catch {
print(error.localizedDescription)
}
}
}
请享用!
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.