0

IOS 5.0 以降の uiwebview で 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 バージョンをインライン化または最初のバージョンを自動再生する方法はありますか? または、これに対する他の解決策はありますか?

4

2 に答える 2

3

やっと見つけました。JS バージョンでは、プレーヤーのパラメーターを指定できます ("showinfo"、"rel"、そしてもちろん "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]];
于 2013-04-04T12:08:07.783 に答える
0

ネイティブの Video Player を使用していないのはなぜですか? LBYouTubeView
ラッパーを 試してみてください。統合は非常に簡単です。

于 2013-04-04T12:11:57.253 に答える