【问题标题】:Swift/AppleTV4: How to connect AVPlayer function to AVPlayerViewController?Swift/AppleTV4:如何将 AVPlayer 功能连接到 AVPlayerViewController?
【发布时间】:2015-12-30 08:35:48
【问题描述】:

这是一个基本的 playMe 函数,调用 AVPlayer,通过 AppleTV 的 Swift 播放 MP3、MP4 或 Wav。如何将其与AVPlayerViewController 结合使用 - 即如何让 playMe("video", "mp4") 在AVPlayerViewController 内播放,在 Main.storyboard 和AVPlayerViewController,在 GUI 和 Swift 代码中?

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()
}

【问题讨论】:

  • 我不熟悉 tvOS,但谷歌搜索“tvos video playback controls”显示that Apple saysAVPlayerViewController“显示 AVPlayer 对象的视频内容以及系统提供的播放控件。”所以我认为你必须朝着那个方向前进......至少在“苹果方式”中

标签: swift avplayer tvos apple-tv avkit


【解决方案1】:

您可以通过子类化AVPlayerViewController 来做到这一点。 AVPlayerViewController 有一个名为 playerAVPlayer 属性。 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()
        }
    }

}

【讨论】:

  • 嗨.. 这将如何与通过按钮内的 playMe(filename, filetype) 打开?只是想知道,喜欢。
  • 您应该能够使用按钮的 segue(可能是最简单的方法)或使用 presentViewController 来呈现 MyPlayerViewController。如果你要使用 segue,在你的 playMe 函数中你可以简单地做 self.performSegueWithIdentifier(identifier, sender: self) 然后在 prepareForSegue 你可以设置你的播放器并将你的播放器设置在destinationViewController上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多