Swift/AppleTV4:如何将 AVPlayer 功能连接到 AVPlayerViewController?

Posted

技术标签:

【中文标题】Swift/AppleTV4:如何将 AVPlayer 功能连接到 AVPlayerViewController?【英文标题】:Swift/AppleTV4: How to connect AVPlayer function to 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 对象的视频内容以及系统提供的播放控件。”所以我认为你必须朝着那个方向前进......至少在“苹果方式”中 【参考方案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上。

以上是关于Swift/AppleTV4:如何将 AVPlayer 功能连接到 AVPlayerViewController?的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer 状态 AVPlayerStatusFailed 无法正常工作

访问 iPod 库以使用 AVAudioPlayer 或使用 AVPlayer 远程控制事件

AVPlayer自定制视频播放器——视频播放器基本实现

如何将thinkcmf导入eclipse

如何将CString转换成wstring

如何将Ios文件上传到