2017-09-27 7 views
0

StageWebViewを使用して実装されたYouTube iframe APIを使用してYouTube動画を再生するAdobe AIRアプリケーションがあります。数年前からうまくいきましたが、今日はYouTubeの動画を再生できないことが判明しました。YouTube iframe APIは、StageWebViewまたはC#WebBrowserでビデオを再生しません。

パラメータを指定しないでStageWebView()を作成した場合(これまで行っていたが、今日まで問題なく動作していた)、AIRはWebKitを使用します。 YouTube iframe APIが読み込まれますが、動画は再生されません。ウィンドウを右クリックして「Stats for Nerds」をクリックしてから、テキストをハイライトしてCtrl + Aを押すと、テキストエディタにコピーして貼り付けた後、以下のようになります。

"お使いのブラウザは現在、利用可能なビデオフォーマットのいずれも認識していません "

私はそれが働いていなかった見たとき、私はマシンのシステム・デフォルトのWebエンジンを使用する代わりに、StageWebViewの(true)を使用。これでYouTube iframe APIが正常に読み込まれないため、動画ウィンドウはまったく表示されません。ここで

は、Adobe AIR(CC 2017/AIRのV.26をアニメーション)基本的な検証のために使用されるコードです:

var webView:StageWebView = new StageWebView(); 
webView.stage = this.stage; 
webView.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); 
webView.loadURL("http://batsonengineering.com/testyt.html"); 

「testyt.html」内のコードのYouTubeはiframeに例ですAPIウェブページ(https://developers.google.com/youtube/iframe_api_reference)、何が起こっているかを知るための警告文を追加しました。これを実行すると、WebKitを使用するとアラート(「4」)が表示されず、デフォルトのWebエンジンを使用すると警告(「3」)が表示されません。

webView.loadURL("http://batsonengineering.com/testyt.html"); 

へ:

webView.loadURL("https://youtu.be/M7lc1UVf-VE"); 

YouTubeのページこの動画に私を取り、私はラインを変更した場合

<!DOCTYPE html> 
<html> 
  <body> 
    <!-- 1. The <iframe> (and video player) will replace this <div> tag. --> 
    <div id="player"></div> 
    <script> 
      // 2. This code loads the IFrame Player API code asynchronously. 
alert("1"); 
      var tag = document.createElement('script'); 
      tag.src = "https://www.youtube.com/iframe_api"; 
      var firstScriptTag = document.getElementsByTagName('script')[0]; 
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
alert("2"); 
      // 3. This function creates an <iframe> (and YouTube player) 
      //    after the API code downloads. 
      var player; 
      function onYouTubeIframeAPIReady() { 
    alert("3"); 
        player = new YT.Player('player', { 
          height: '390', 
          width: '640', 
          videoId: 'M7lc1UVf-VE', 
          events: { 
            'onReady': onPlayerReady, 
            'onStateChange': onPlayerStateChange 
          } 
        }); 
      } 
      // 4. The API will call this function when the video player is ready. 
      function onPlayerReady(event) { 
    alert("4"); 
        event.target.playVideo(); 
      } 
      // 5. The API calls this function when the player's state changes. 
      //    The function indicates that when playing a video (state=1), 
      //    the player should play for six seconds and then stop. 
      var done = false; 
      function onPlayerStateChange(event) { 
    alert("5"); 
        if (event.data == YT.PlayerState.PLAYING && !done) { 
          setTimeout(stopVideo, 6000); 
          done = true; 
        } 
      } 
      function stopVideo() { 
        player.stopVideo(); 
      } 
    </script> 
  </body> 
</html> 

:以下はtestyt.htmlのコードがあります再生するとYouTubeページが読み込まれますが、システムWebエンジンを使用すると動画は再生されません。 WebKitを使用すると、ビデオが再生されます。ただし、iframe APIコマンドを使用して動画を制御できる必要があり、YouTubeページ全体をユーザーに見せたくない場合もあります。私はそれを埋め込む必要がある。

この後、C#WebBrowserコンポーネントでYouTube動画を再生できるかどうかを確認することにしました。これも機能しません。ただし、ブラウザで直接http://batsonengineering.com/testyt.htmlを実行すると、動画が再生されます。だから、StageWebViewやWebBrowserのようなコンテナの中に埋め込まれたときに、ビデオが再生されないようにするために、YouTube側が何か変わっているようだ。

だから私の質問は以下のとおりです。

  • 1)StageWebViewの中でYouTubeの動画を再生するのWebKitが突然できなくなりましたか?

  • 2)StageWebViewで私のシステムのWebエンジンが突然YouTube APIを読み込めなかったのはなぜですか?

  • 3)これを修正するために何かできることはありますか?

答えて

0

考えてみましょう:HTMLファイルがhttpsサーバー上にある

  • てみロード?
    YouTubeはセキュア(https)ドメインからの外部リクエストのみを受け入れることができます。

  • httpのコンテンツとhttpsのコンテンツを混在させることはできません。
    つまり、ドメインがhttp://batsonengineering.com(HTTPを使用している)の場合、tag.src = "https://www.youtube.com/iframe_api";(HTTPSを使用)のようなhtmlコードは使用できません。
    tag.src = "http://www.youtube.co... etc

+0

こんにちはVC.Oneを使用してみてください、私は、HTTPS、その後、排他的、排他的にHTTPを使用してみましたし、同じ結果を毎回受け - ビデオなしの再生を。しかし、提案をありがとう! –

関連する問題