前提・実現したいこと
ボタンを押すと、youtube上の動画が再生される、というプログラムを作っています。
実装中、以下の問題が発生しました。
発生している問題
ボタンをタップすると、再生する画面は開くのですが、肝心の動画が再生されません。
↓ずっとローディングで、このような状態です。
該当のソースコード
swift
import UIKit import AVFoundation import MediaPlayer import AVKit class RecipeDetailViewController: UIViewController{ @IBOutlet var playButton: UIButton! var player: AVPlayer? @IBAction func playVideo() { print("playvideoが呼ばれた") guard let url = URL(string: "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4") else { return } // Create an AVPlayer, passing it the HTTP Live Streaming URL. player = AVPlayer(url: url) // Create a new AVPlayerViewController and pass it a reference to the player. let controller = AVPlayerViewController() controller.player = player // Modally present the player and call the player's play() method when complete. self.present(controller, animated: true) {[self] in print("presentが呼ばれた") player!.play() } } override func viewDidLoad() { super.viewDidLoad() playButton.setTitle("", for: UIControl.State.normal) playButton.tag = 0 playButton.addTarget(self, action: #selector(self.tappedVideo(_ :)), for: .touchUpInside) } @objc func tappedVideo(_ sender: UIButton){ playVideo() print("ボタンがタップされた") } }
試したこと
- YouTubeのリンクに問題があるのかと思って、変えてみました。
- printによると、
playvideoが呼ばれた→ボタンがタップされた→presentが呼ばれた
の順で呼ばれました。
guard let url = URL(string: "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4")
や
player = AVPlayer(url: url)
を@IBAction func playVideo()
のかっこの外に出してみました。
が、いずれも、初めにあげた問題と同じ状態になりました。
お分かりになる方、回答よろしくお願いいたします。
まだ回答がついていません
会員登録して回答してみよう