10

我已按照建议使用 UIWebView 将视频(从 YouTube API v3 提取)嵌入到我的 iPhone 应用程序中。问题是某些视频(例如来自 VEVO 的视频)在尝试在设备上播放时会产生以下错误。

该视频包含来自 VEVO 的内容。它被限制在某些网站上播放。

这不应该发生,因为像 Flipboard 和 Rockpack 这样的应用程序似乎也在使用 UIWebView,并且能够播放来自 VEVO 和其他来源的视频。

我可能做错了什么?

PS:我知道还有其他帖子以某种方式触及这个问题,但他们未能解决这个特定问题。

4

3 回答 3

15

使用适用于 iOS 的 YouTube 的YTPlayerView并将该origin属性设置为有效的 URL 可以正确播放许多 VEVO 视频。

在您的视图控制器中:

@property (weak, nonatomic) IBOutlet YTPlayerView *playerView;

// ..

NSDictionary *playerVars = @{
                             @"playsinline" : @1,
                             @"showinfo" : @0,
                             @"rel" : @0,
                             @"controls" : @1,
                             @"origin" : @"https://www.example.com", // this is critical
                             @"modestbranding" : @1
                             };

[self.playerView loadWithVideoId:@"Ri7-vnrJD3k" playerVars:playerVars];

origin起源

没有origin无产地

于 2015-06-25T20:28:14.800 回答
4

您是否从 VEVO 收到所有视频的错误?您确定要播放的视频是可嵌入的吗?添加具有 'true' 值的 'videoEmbeddable' 参数,以便您只使用可以嵌入的视频。

videoEmbeddable 参数允许您将搜索限制为仅可嵌入网页的视频。如果为此参数指定值,则还必须将 type 参数的值设置为 video。

可接受的值为: any – 返回所有视频,无论是否可嵌入。true – 仅检索可嵌入视频。

来源:https ://developers.google.com/youtube/v3/docs/search/list#videoEmbeddable

于 2015-05-03T18:42:54.763 回答
0

对于@JAL 回答的 Swift 4.2,您只需执行以下操作,它就会像 vevo 视频的魅力一样发挥作用:

import UIKit
import youtube_ios_player_helper

class MyYoutubePlayerViewController: UIViewController {

  @IBOutlet weak var playerView: YTPlayerView!

   private var playerVars: [String : Any] =  [ 
                                                "playsinline" : 1,
                                                "showinfo" : 1,
                                                "rel" : 1,
                                                "modestbranding" : 1,
                                                "controls" : 1,
                                                "origin" : "https://www.youtube.com" ]

  override func viewDidLoad() {
     super.viewDidLoad()

     self.playerView.load(withVideoId: "YQHsXMglC9A", playerVars: playerVars)
  }

}
于 2019-05-28T06:44:40.483 回答