10

与询问如何在 tvOS 上播放 YouTube 视频的问题类似,我想在我正在构建的应用程序中播放 Vimeo 视频。但是,正如这里所解释的,常规的网络视图(这是我在 iOS 中做事的方式)已经过时了。

假设我知道视频页面的 URL 但不知道原始 .mp4 文件的 URL,我将如何在 tvOS 上播放 Vimeo 视频?

4

3 回答 3

3

好吧,显然,没有办法在 WebView 中播放 Vimeo 视频,因为 tvOS SDK 没有 WebView。我们唯一的选择是 AVPlayer,但它需要视频的直接 URL,而 Vimeo 不会免费为我们提供直接视频 URL。目前,唯一可行的方法是购买 Vimeo 的 PRO 会员资格(目前每年 199 美元)并通过 Vimeo 的 API 检索直接视频 URL。

编辑:正如 nickv2002 所指出的,这种方法只会为您提供指向您自己的视频的直接 URL。这意味着,即使使用 Vimeo PRO,您也不能在 Vimeo 上拍摄任何视频并获得它的直接 URL。

于 2015-10-06T14:51:28.010 回答
2

使用这个 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()
                }
            }
        }
    }
}
于 2017-01-18T11:48:10.820 回答
-4

您可以使用 AVPlayer 播放视频,就像在 iOS 上一样。

AVPlayer 文档

于 2015-09-21T15:42:31.530 回答