Проблема с avplayerkit при воспроизведении видео
Привет я новичок в swift и использую AVPlayerViewController
для размещения видео с моего URL, но проблема в том, что я не могу загрузить видео только черный экран, показывая мне показать мой код
Код
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var viewPlayer: UIView!
var player: AVPlayer!
var avpController = AVPlayerViewController()
var url = "https://www.youtube.com/watch?v=HsQvAnCGxzY"
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: self.url)
player = AVPlayer(url: url!)
avpController.player = player
avpController.view.frame.size.height = viewPlayer.frame.size.height
avpController.view.frame.size.width = viewPlayer.frame.size.width
self.viewPlayer.addSubview(avpController.view)
// Do any additional setup after loading the view, typically from a nib.
}
}
Пожалуйста, обратитесь к указанному коду и скажите, где я ошибся, чтобы я мог воспроизвести видео. Заранее спасибо
2 ответа
На самом деле это проблема URL. AVPlayer никогда не поддерживает видео с YouTube. Он поддерживает формат mp4.
Если вы хотите воспроизвести видео в своем ViewController, вы должны использовать AVPlayerLayer. Вы должны реализовать контроллеры игроков самостоятельно.
override func viewDidLoad() {
super.viewDidLoad()
// creating video url
guard let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") else {
return
}
// create AVPlayer
let player = AVPlayer(url: videoURL)
// setup AVPlayerLayer
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
self.view.layer.addSublayer(playerLayer)
// start playing
player.play()
}
В противном случае используйте AVPlayerViewController. Вместо того, чтобы использовать его представление, представьте сам viewController.
override func viewDidLoad() {
super.viewDidLoad()
// creating video url
guard let videoURL = URL(string: "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4") else {
return
}
// setup AVPlayer and AVPlayerViewController
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
}
override func viewDidAppear(_ animated: Bool) {
// presenting playerViewController only after the viewControllers view was added to a view hierarchy.
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}