2013-04-04 147 views
0

我需要在uiwebview中使用IOS 5.0+自动播放来自youtube的内联视频。 我设法使其发挥内嵌本:在iPhone上自动播放内嵌YouTube视频

NSString *html = [NSString stringWithFormat:@"\ 
      <html>\ 
      <head>\ 
      <script type='text/javascript'>\ 
        function onPlayerReady(event) {\ 
        event.target.playVideo();\ 
        }\ 
      </script>\ 
      <style type=\"text/css\">\ 
      iframe {position:absolute; top:0%%; margin-top:-0px;}\ 
      body {background-color:#000; margin:0;}\ 
      </style>\ 
      </head>\ 
      <body>\ 
      <iframe width=\"100%%\" src=\"https://www.youtube.com/embed/%@?feature=player_detailpage& modestbranding=1&amp;rel=0;autoplay=1;showinfo=0;loop=1;autohide=1;playsinline=1;autoplay=1\" frameborder=\"0\" allowfullscreen></iframe>\ 
      </body>\ 
      </html>", ID]; 
    [videoWebView loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]]; 

但我无法弄清楚如何使它自动播放。 我还发现其他解决方案,自动播放视频,但它开始全屏,我不知道如何使其内联。

NSString *youTubeVideoHTML = @"<!DOCTYPE html><html><head><style>body{margin:0px 0px 0px 0px;}</style></head> 
<body> <div id=\"player\"></div> 
    <script> var tag = document.createElement('script'); 
    tag.src = \"http://www.youtube.com/player_api\"; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
    var player; 
    function onYouTubePlayerAPIReady() { 
     player = new YT.Player('player', {width:'%d', height: '%d', videoId:'%@', events: { 'onReady': onPlayerReady, } }); } 
     function onPlayerReady(event) { event.target.playVideo(); } 
    </script> 
</body> </html>"; 

    NSString *html = [NSString stringWithFormat:youTubeVideoHTML, 320, 150, ID]; 
    [videoWebView loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]]; 

有没有办法让js版本内联或第一版自动播放?或者还有其他解决方案吗?

回答

3

我终于找到了。 在JS的版本,你可以指定播放器的参数(如“showinfo”,“相对”,当然还有“playsinline”)

你只需要添加playerVars对象,并指定你的参数吧。 所以代码看起来像这样:

NSString *youTubeVideoHTML = @"<!DOCTYPE html><html><head><style>body{margin:0px 0px 0px 0px;}</style></head> <body> <div id=\"player\"></div> <script> var tag = document.createElement('script'); tag.src = \"http://www.youtube.com/player_api\"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', {width:'%d', height: '%d', videoId:'%@', playerVars: {'playsinline' : 1, 'rel':0, 'showinfo':0}, events: { 'onReady': onPlayerReady, } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>"; 

NSString *html = [NSString stringWithFormat:youTubeVideoHTML, 320, 180, ID]; 
[videoWebView loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]]; 
+0

Thaks为这个美妙的解决方案 – dreampowder 2013-05-05 13:35:01

0

为什么你不使用本机视频播放器?
尝试LBYouTubeView包装,它很容易整合。

+0

因为我认为这是违反YouTube规则 – Stals 2013-04-04 12:16:24