与询问如何在 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 可以播放 vimeo 内容,安装
pod '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 上一样。