类似于这个问题询问如何在tvOS上播放YouTube视频,我想在我正在构建的应用程序中播放Vimeo视频。然而,正如这里所解释的,常规的网页视图(这是我在iOS中做事情的方式)已经过时了。
如果我知道视频页面的URL,但不知道原始。mp4文件的URL,我该如何在tvOS上播放Vimeo视频?
显然,没有办法在WebView中播放Vimeo视频,因为tvOS SDK没有WebView。我们唯一的选择是AVPlayer,但它需要一个视频的直接URL,而Vimeo不会免费给我们直接的视频URL。目前,唯一可行的方法是购买Vimeo的PRO会员资格(目前每年199美元),并通过Vimeo的API检索直接视频url。
编辑:正如nickv2002所指出的,这种方法将只给你自己的视频的直接url。这意味着,即使使用Vimeo PRO,你也不能在Vimeo上拍摄任何视频并获得它的直接URL。
使用这个pod, tvOS可以播放视频内容,安装
荚YTVimeoExtractor"
和
import YTVimeoExtractor
并使用此功能播放视频
func playVimeoVideo(videoId: String)
{
YTVimeoExtractor.shared().fetchVideo(withVimeoURL: "https://vimeo.com/video/(videoId)", withReferer: nil) { (video:YTVimeoVideo?, error:Error?) in
if let streamUrls = video?.streamURLs
{
var streamURL: String?
var streams : [String:String] = [:]
for (key,value) in streamUrls {
streams["(key)"] = "(value)"
print("(key) || (value)")
}
if let large = streams["720"]
{
streamURL = large
}
else if let high = streams["480"]
{
streamURL = high
}
else if let medium = streams["360"]
{
streamURL = medium
}
else if let low = streams["270"]
{
streamURL = low
}
if let url = streamURL
{
let videoURL = NSURL(string: url)
let player = AVPlayer(url: videoURL! as URL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
}
}
}
您可以使用AVPlayer播放视频,就像在iOS上一样。
AVPlayer文档