2015-10-16 82 views
6

我想爲我的Swift應用程序創建一個視頻播放器,但我不斷收到'未解析標識符AVPlayerViewController'的錯誤。我錯過了什麼?如何將Youtube視頻嵌入到我的應用中?

我是這個初學者,我可能不得不用幾十年的時間以外行人的方式提問。我一直在互聯網上搜索一段視頻,看看如何將Youtube視頻嵌入到我的應用中,但沒有結果。如果你能指點我一個很棒的教程!

謝謝!

+1

您是否在您的f的頂部導入了AVKit? ILE? – dan

+0

剛剛添加的,原始的錯誤消息消失了,取而代之的是‘與類型的參數列表‘(的contentURL:NSURL)「無法調用類型初始化’AVPlayerViewController’和‘懸而未決identifier'AVPlayerViewControllerStyleNone的使用’ – Dandelyons

+0

此外,如何添加MediaPlayer框架? – Dandelyons

回答

23

的Xcode 8.2•斯威夫特3.0.2

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var wv: UIWebView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     loadYoutube(videoID: "oCm_lnoVf08") 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
    func loadYoutube(videoID:String) { 
     guard 
      let youtubeURL = URL(string: "https://www.youtube.com/embed/\(videoID)") 
      else { return } 
     wv.loadRequest(URLRequest(url: youtubeURL)) 
    } 
} 

的Xcode 7.3.1•斯威夫特2.x的

import UIKit 

class ViewController: UIViewController { 
    // create an outlet for your webview 
    @IBOutlet weak var wv: UIWebView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // load your you tube video ID 
     loadYoutube(videoID: "oCm_lnoVf08") 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
    func loadYoutube(videoID videoID:String) { 
     // create a custom youtubeURL with the video ID 
     guard 
      let youtubeURL = NSURL(string: "https://www.youtube.com/embed/\(videoID)") 
      else { return } 
     // load your web request 
     wv.loadRequest(NSURLRequest(URL: youtubeURL)) 
    } 
} 
+0

https://www.dropbox.com/s/mv0c8oetzn4bmyy/webView.zip?dl=0 –

+0

我想開這個鏈接,但我的屏幕只有白色不顯示任何下載文件 –

+0

@GauravPatel只需創建一個新的項目並添加代碼在那裏。我剛纔測試了它在這裏,它工作正常的Xcode 7.3.1(AppStore的版本) –

2

使用YouTube-Player-iOS-Helper

步驟1:添加pod 'youtube-ios-player-helper', '0.1.4'您的Podfile並運行pod install

第2步:實現此代碼:

import UIKit 
import youtube_ios_player_helper 

class ViewController: UIViewController, YTPlayerViewDelegate { 
    @IBOutlet weak var playerView: YTPlayerView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     playerView.delegate = self 

     let playerVars = ["playsinline": 1] // 0: will play video in fullscreen 
     self.playerView.loadWithVideoId("youtubeId", playerVars: playerVars) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

注:rel關鍵0playerVars字典,如果你不想顯示相關視頻:

let playerVars = ["playsinline":1, "rel" : 0 ]