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)これを修正するために何かできることはありますか?
こんにちはVC.Oneを使用してみてください、私は、HTTPS、その後、排他的、排他的にHTTPを使用してみましたし、同じ結果を毎回受け - ビデオなしの再生を。しかし、提案をありがとう! –