AVplayer 不播放来自 iPhone 个图库的视频
AVplayer not playing video from iPhone gallery
所以,这段代码在我之前的项目中运行良好 iPhone 5s,但是当我将它嵌入到我的主项目中时它不起作用,它从图库中选择视频,显示播放器但继续搜索对于视频-(不会播放),只有黑色播放器屏幕,下方有搜索指示器和暂停按钮控件等。
此外,我在输出 window 中得到的唯一错误是:
[1524:458877] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
对其进行了大量搜索,并从 Apple 论坛上的一个答案得出结论,它不会产生任何影响,最好忽略它。
import UIKit
import AVKit
import AVFoundation
class GalleryVideoSelectorViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
let ipc = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
ipc.delegate=self
}
@IBAction func SelectVideo(_ sender: Any) {
ipc.sourceType = .photoLibrary
ipc.mediaTypes = ["public.movie"]
present(ipc,animated:true,completion: nil)
}
@IBAction func PlayBackVideo(_ sender: Any) {
if let videoURL = UserDefaults.standard.url(forKey: "LullabyURL") {
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController,animated:true)
{
playerViewController.player!.play()
}
}
}
@objc func imagePickerController(_ picker:UIImagePickerController, didFinishPickingMediaWithInfo info:[String:Any])
{
ipc.dismiss(animated:true){
var videourl = info["UIImagePickerControllerReferenceURL"] as? URL
if let videoURL = videourl{
defaults.set(videoURL,forKey: "LullabyURL")
let player = AVPlayer(url:videourl!)
print (videourl!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController,animated:true)
{
playerViewController.player!.play()
}
}
}
}
这是我的委托的更新版本,它实际上是导致问题的原因。
@objc func imagePickerController(_ picker:UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any])
{
ipc.dismiss(animated:true){
let videourl = info[UIImagePickerController.InfoKey.mediaURL] as! URL
UserDefaults.standard.set(videourl,forKey: "LullabyURL")
let player = AVPlayer(url: videourl)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController,animated:true)
{
playerViewController.player!.play()
}
}
}
已将 "didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any]" 更改为 "didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any]"
和
视频 Url 来自 "let videourl = info["UIImagePickerControllerReferenceURL"] as?URL" to "let videourl = info[UIImagePickerController.InfoKey.mediaURL] as! URL"
所以,这段代码在我之前的项目中运行良好 iPhone 5s,但是当我将它嵌入到我的主项目中时它不起作用,它从图库中选择视频,显示播放器但继续搜索对于视频-(不会播放),只有黑色播放器屏幕,下方有搜索指示器和暂停按钮控件等。
此外,我在输出 window 中得到的唯一错误是:
[1524:458877] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
对其进行了大量搜索,并从 Apple 论坛上的一个答案得出结论,它不会产生任何影响,最好忽略它。
import UIKit
import AVKit
import AVFoundation
class GalleryVideoSelectorViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
let ipc = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
ipc.delegate=self
}
@IBAction func SelectVideo(_ sender: Any) {
ipc.sourceType = .photoLibrary
ipc.mediaTypes = ["public.movie"]
present(ipc,animated:true,completion: nil)
}
@IBAction func PlayBackVideo(_ sender: Any) {
if let videoURL = UserDefaults.standard.url(forKey: "LullabyURL") {
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController,animated:true)
{
playerViewController.player!.play()
}
}
}
@objc func imagePickerController(_ picker:UIImagePickerController, didFinishPickingMediaWithInfo info:[String:Any])
{
ipc.dismiss(animated:true){
var videourl = info["UIImagePickerControllerReferenceURL"] as? URL
if let videoURL = videourl{
defaults.set(videoURL,forKey: "LullabyURL")
let player = AVPlayer(url:videourl!)
print (videourl!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController,animated:true)
{
playerViewController.player!.play()
}
}
}
}
这是我的委托的更新版本,它实际上是导致问题的原因。
@objc func imagePickerController(_ picker:UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any])
{
ipc.dismiss(animated:true){
let videourl = info[UIImagePickerController.InfoKey.mediaURL] as! URL
UserDefaults.standard.set(videourl,forKey: "LullabyURL")
let player = AVPlayer(url: videourl)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController,animated:true)
{
playerViewController.player!.play()
}
}
}
已将 "didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any]" 更改为 "didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any]"
和 视频 Url 来自 "let videourl = info["UIImagePickerControllerReferenceURL"] as?URL" to "let videourl = info[UIImagePickerController.InfoKey.mediaURL] as! URL"