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
有一个名为 player
的 AVPlayer
属性。 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 无法正常工作