web-dev-qa-db-ja.com

YouTubeiframeの埋め込みはAndroid

AndroidアプリでwebViewを使用してYouTubeiframeプレーヤーと自動再生動画を読み込んでいます。SamsungGalaxyS2とS3では正常に動作しますが、Samsung GalaxyS4で実行すると常に結果が発生します。自動再生しようとすると灰色の画面になります。

Galaxy S4では、自動再生なしで正常に動作し、再生を開始するにはユーザーアクション(クリック)が必要です(playerVarsに「autoplay:1」を追加しても何も起こりません)。

OnPlayerReady()でplayer.playVideo()を呼び出そうとすると、次の灰色の画面が表示されました。

enter image description here

LogCatには、奇妙なエラーメッセージも表示されます。

E/IMGSRV(17004): :0: GetPTLAFormat: Invalid format

自動再生に失敗したとき。このメッセージの内容がわかりません。私はそれをグーグルで検索しましたが、何も見つかりませんでした。

これがAndroid WebViewのコードです:

WebView wv = (WebView) findViewById(R.id.webview);
WebSettings websettings = wv.getSettings();
websettings.setJavaScriptEnabled(true);
websettings.setDomStorageEnabled(true);
websettings.setDatabaseEnabled(true);
wv.loadUrl(strUrl);
wv.setWebViewClient(new WebViewClient());
wv.setWebChromeClient(new WebChromeClient());
wv.setPadding(0, 0, 0, 0);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.setVerticalScrollBarEnabled(false);
wv.setHorizontalScrollBarEnabled(false);

これは既知の問題ですか、それともビデオを自動再生するための解決策がありますか?ありがとう!

17
iForests

自動再生を無効にすることが「標準」になりつつあると思います。

ちなみに、 this

編集:

リンクが切れているので、 https://lumi.do/p/04x626i1ngvht/how-to-autoplay-html5-video-on-Android で見つけました:

AndroidでHTML5ビデオを「自動再生」する方法
19/05/11にラボのMathiasDeslogesによって作成されました

Androidデバイスで新しいHTML5ビデオタグを試してみたことがありますか?
私たちが直面している問題があります。
コンテキストを設定しましょう。ページの読み込みが完了した直後に動画の再生を開始します。
HTML5仕様によると、「autoplay」属性を使用する必要がありますが、Androidでは効果がありません。そこで、ページが読み込まれた後にplay関数を呼び出す小さなスクリプトを試してみました。

function callback () { document.querySelector('video').play(); } 
window.addEventListener("load", callback, false);

これは、従来のデスクトップブラウザでの「自動再生」属性の動作をうまく再現しますが、Androidブラウザでは失敗します。
以前に定義した「callback()」関数を任意のノードのクリックイベントにアタッチしようとすると、ビデオは「クリック時に」正常に再生され始めます(通常の動作)。そして、ページのhtmlコードで作業を続けているうちに、解決策が見つかりました。

理由は聞かないでください。ただし、「poster」属性を追加すると機能します。

12

これは、帯域幅の問題のために、OSメーカーがビデオを自動再生できないようにすることをより制限するようになった症状だと思います。これはiOSの問題であり、ユーザーが最初にクリックするなどのアクションを実行しない限り、play()へのJavaScript呼び出しが失敗します。それはおそらくあなたの場合に起こっていることです。

2

答えたとおり ここ 自動再生を制限するだけでなく、自動イベントを制限していると思います。私にとっては、Cordovaがロードされたときにトリガーされたのはjquerymobileのページ遷移でした。クリックでもトリガーするように切り替えたところ、問題は解決しました。

2
Bees