2017-08-08 60 views
0

我想通過按下單元格內的按鈕來播放視頻。在我的代碼中沒有錯誤,所以我認爲每一件事情都是正確設置的,但是當我運行模擬器時視頻不能播放。它是URL還是我需要在某處添加更多代碼?播放託管在網站上的視頻的最佳方式是什麼?請提供它的網址?如果是這樣,這對我沒有效果。爲什麼不播放視頻或者我的網址無法正常工作?

這裏的是代碼:

import UIKit 
import AVFoundation 
import AVKit 

class VideoPlayerView: UIView { 

override init(frame: CGRect) { 
    super.init(frame: frame) 

    backgroundColor = UIColor.black 


    let urlString = "www.dailymotion.com./video/x1prji_scott-hall-vs-hollywood-hulk-hogan-sport" 

    if let url = URL(string: urlString) { 
    let player = AVPlayer(url: url) 

     let playerLayer = AVPlayerLayer(player: player) 
     self.layer.addSublayer(playerLayer) 
     playerLayer.frame = self.bounds 


     player.play() 
    } 
} 
required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 


} 

class DrillsTableViewCell: UITableViewCell { 

@IBOutlet weak var logoImage: UIImageView! 

@IBOutlet weak var drillTitle: UILabel! 


@IBOutlet weak var playButton: UIButton! 
@IBAction func watchButton(_ sender: Any) { 
    print(123) 



     if let keyWindow = UIApplication.shared.keyWindow { 
      let view = UIView(frame: keyWindow.frame) 
      view.backgroundColor = UIColor.white 


      view.frame = CGRect(x: 0.0, y: 0.0, width: keyWindow.frame.width, height: keyWindow.frame.height) 

      let videoPlayerFrame = CGRect(x: 0, y: 0, width: keyWindow.frame.width, height: keyWindow.frame.width * 9/16) 
      let videoPlayerView = VideoPlayerView(frame: videoPlayerFrame) 
      view.addSubview(videoPlayerView) 


      keyWindow.addSubview(view) 
      UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: { 

        view.frame = keyWindow.frame 

      }, completion: { (completedAnimation) in 
       //possible features implemented later 
       UIApplication.shared.isStatusBarHidden = true 


      }) 



    } 

    } 

} 
+0

我懷疑'AVPlayer'需要一個視頻文件(比如'.mp4'或'3gp'),但是你的代碼給它一個網頁('.html'文件)。您可以使用'webView'來打開網頁。 –

回答

1

由於VC.One說,你正在使用指向一個網頁的網址 - 也就是說,一個HTML頁面,看起來像這樣:

enter image description here

換句話說,您提供了整個HTML5頁面,圖像,視頻,CSS等 - 瀏覽器需要顯示整個頁面的信息。

AVPlayer期待到視頻資源的URL - 即MP4文件或流式索引文件或清單。

通常情況下,YouTube或DailyMotion等網站希望您在添加視頻時加入品牌。 。

對於你的例子,如果你點擊分享按鈕,你會看到一些嵌入代碼,你可以在網頁上只是包含這個特定的視頻(這是網絡而不是本地播放器):

<iframe frameborder="0" width="480" height="270" src="//www.dailymotion.com/embed/video/x1prji" allowfullscreen></iframe><br /><a href="http://www.dailymotion.com/video/x1prji" target="_blank">Scott Hall vs. &quot;Hollywood&quot; Hulk Hogan</a> <i>by <a href="http://www.dailymotion.com/Stinger1981" target="_blank">Stinger1981</a></i> 

還有一個SDK,讓你在你的APP-這一個,如果對的ObjectiveC嵌入位DailyMotion視頻並沒有對斯威夫特也有較新的一個:

+0

因此,爲了讓我只從網站獲取視頻文件,而不是整個網站的URL,我怎樣才能將代碼格式化到播放視頻的位置? –

+0

如果它是本機應用程序,您確實想使用SDK。 – Mick