2015-12-30 48 views
0

這是一個基本的playMe函數,調用AVPlayer,通過AppleTV與Swift一起播放MP3,MP4或Wav。我該如何將它與AVPlayerViewController結合 - 也就是說,如何讓playMe(「video」,「mp4」)在AVPlayerViewController內播放,在Main.storyboard和AVPlayerViewController之間建立連接所需的步驟是什麼GUI和Swift代碼中?你可以這樣做Swift/AppleTV4:如何將AVPlayer功能連接到AVPlayerViewController?

func playMe(inputfile: String, inputtype: String) { 
    let path = NSBundle.mainBundle().pathForResource(inputfile, ofType:inputtype)! 
    let videoURL = NSURL(fileURLWithPath: path) 
    let player = AVPlayer(URL: videoURL) 
    let playerLayer = AVPlayerLayer(player: player) 
    playerLayer.frame = self.view.bounds 
    self.view.layer.addSublayer(playerLayer) 
    player.play() 
} 
+0

我不熟悉tvOS但谷歌搜索「[tvos視頻播放控件(https://www.google.com/webhp?sourceid = chrome-instant&ion = 1&espv = 2&ie = UTF-8#q = tvos%20video%20playback%20controls)「顯示[Apple說](https://developer.apple.com/library/tvos/documentation /AVFoundation/Reference/AVPlayerViewController_Class/index.html)'AVPlayerViewController''「顯示AVPlayer對象的視頻內容以及系統提供的播放控件。」所以我認爲你必須朝着這個方向努力...至少在'蘋果之路'中 –

回答

1

的一種方法是通過繼承AVPlayerViewControllerAVPlayerViewController有一個AVPlayer屬性,名稱爲player。 AVPlayerViewController的一個子類,可能是這個樣子:

import UIKit 
import AVKit 

class MyPlayerViewController: AVPlayerViewController { 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     let path = NSBundle.mainBundle().pathForResource("myVideo", ofType:"mov")! 
     let videoURL = NSURL(fileURLWithPath: path) 
     player = AVPlayer(URL: videoURL) 
    } 

} 

此實現將顯示默認的播放控制,並會開箱與Siri的遙控器。

下面是代碼通過按下一個按鈕來做到這一點使用prepareForSegue:

import UIKit 
import AVFoundation 
import AVKit 
let playerViewControllerSegue = "play"; 
class MyViewController: UIViewController {  
    @IBAction func playMovie(sender: UIButton) { 
     self.performSegueWithIdentifier(playerViewControllerSegue, sender: self); 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if (segue.identifier == playerViewControllerSegue){ 
      let path = NSBundle.mainBundle().pathForResource("7second", ofType:"mp4")! 
      let videoURL = NSURL(fileURLWithPath: path) 
      let player = AVPlayer(URL: videoURL) 
      let playerViewController = segue.destinationViewController as! AVPlayerViewController 
      playerViewController.player = player 
      playerViewController.player?.play() 
     } 
    } 

} 
+0

嗨..這將如何被綁定到通過按鈕內的playMe(文件名,文件類型)打開?只是想知道,就像。 – esaruoho

+1

你應該能夠使用按鈕的segue(可能是最簡單的方法),或者使用presentViewController來呈現MyPlayerViewController。如果你打算使用一個segue,在你的playMe函數中你可以簡單地做self.performSegueWithIdentifier(identifier,sender:self),然後在prepareForSegue中你可以設置你的播放器並將你的播放器設置在destinationViewController上。 – Jonathan