Проблема с 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()
    }
}
Другие вопросы по тегам