【问题标题】:How to play Vimeo content on tvOS如何在 tvOS 上播放 Vimeo 内容
【发布时间】:2015-12-12 12:33:27
【问题描述】:

类似于this question 询问如何在 tvOS 上播放 YouTube 视频,我想在我正在构建的应用中播放 Vimeo 视频。但是,as explained here,常规的 Web 视图(这是我在 iOS 中做事的方式)已经过时了。

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

【问题讨论】:

  • PS:我正在寻找不违反 Vimeo 服务条款的东西,但我也有兴趣了解像 HCYouTubeParser 这样可以找出 .mp4 URL 的库.
  • 我想我们必须等到 Vimeo 更新他们的 API 才能在 tvOS 上执行类似的操作,但我想我还是会提出问题。

标签: vimeo tvos


【解决方案1】:

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

AVPlayer Documentation

【讨论】:

  • 当然,如果我有 .mp4 文件的完整 URL(正如我在问题中解释的那样,我不能不违反服务条款)。但我不认为我可以给 AVPlayer 一个像 vimeo.com/2619976 这样的 URL 并期望它播放。还是我缺少一些神奇的 AVPlayer 功能?
【解决方案2】:

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

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

【讨论】:

  • 感谢您的回答。如果您只是想使用该服务分发自己的视频,Vimeo Pro 会员资格将是一个不错的选择。不幸的是,如果您想在 tvOS 上观看 其他 用户的视频,则无法使用此功能。
【解决方案3】:

使用这个 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()
                }
            }
        }
    }
}

【讨论】:

  • 这些天在其他项目上,所以我没有测试,但这似乎是一个很好的解决方案。谢谢,+1
猜你喜欢
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多