2

我需要在来自 youtube 的 UIWebiview 中播放视频。在旧设备上一切正常 ( 5.1+)

不幸iOS7的是,视频没有播放。它开始loading了,但它永远不会开始播放。即使视频已完全加载。只有当您手动停止并按下播放时,视频才会开始播放。

这是一些代码:

- (void)viewDidAppear:(BOOL)animated;
{
    [super viewDidAppear:animated];
    if(!self.viewMoviePlayerView.superview) {
        [self.viewMediaContentContainer addSubview:self.viewMoviePlayerView];
    }
    self.viewMoviePlayerView.isScrollingEnabled = NO;

    [self.viewMoviePlayerView loadRequest:[NSURLRequest requestWithURL:
                           [NSURL URLWithString:
                           [NSString stringWithFormat:@"%@%@", @"http://www.youtube.com/embed/", self.currentSelectedItem.guid]]]];
...
}

对此有何建议?

4

1 回答 1

0

最新版本的 iOS 不允许自动播放。您不应该以编程方式开始下载可能给用户带来成本的数据。我找到了一种方法,但有点棘手:

  • 显示 html 字符串而不是 url

    [webview loadHTMLString:<html> baseURL:[[NSBundle mainBundle] resourceURL]];
    
  • html需要是嵌入播放器:

    <html>
    <body style='margin:0px;padding:0px;'>
      <script type='text/javascript' src="http://www.youtube.com/iframe_api"></script>
      <script type='text/javascript'>
         function onYouTubeIframeAPIReady(){
            ytplayer=new YT.Player('playerID',{events:{onReady:onPlayerReady, onStateChange:onPlayerStateChange}});
         }
      function onPlayerReady(a){ a.target.playVideo(); }
      function onPlayerStateChange(event) {
         if (event.data == YT.PlayerState.BUFFERING) {
            event.target.playVideo();
         }
      }
      </script>
      <iframe id='playerID' type='text/html' width='320' height='240'
         src="http://www.youtube.com/embed/xxxxxxxxxxx?enablejsapi=1&rel=0&playsinline=1&autoplay=1" frameborder='0'></iframe>
    </body>
    </html>
    

    这很好用,因为 iframe API 中的 javascript 会强制播放器在加载后开始播放,并且每次开始缓冲时播放。我强烈建议您阅读有关 youtube API 的信息

  • 将您的视频 ID 放入嵌入中,就是这样!
于 2013-10-21T06:09:37.697 回答