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 では、自動再生は許可されていません。ユーザーにコストがかかる可能性のあるデータのダウンロードをプログラムで開始することは想定していません。私は方法を見つけましたが、少しトリッキーです:

  • URL の代わりに HTML 文字列を表示する

    [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 に答える