mozilla、Microsoft Edge、古いgoogle chromeでも機能するが、新しいgoogle chromeでは機能しないオーディオ自動再生。自動再生をブロックしました。 Google Chromeでオーディオを自動再生する方法はありますか?
ソリューション#1
ここでの私の解決策は、iframe
を作成することです
<iframe src="audio/source.mp3" allow="autoplay" style="display:none" id="iframeAudio">
</iframe>
chrome以外のブラウザの場合もaudio
タグ
<audio autoplay loop id="playAudio">
<source src="audio/source.mp3">
</audio>
そして、私のscript
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
if(!isChrome){
$('#iframeAudio').remove()
}
else{
$('#playAudio').remove() //just to make sure that it will not have 2x audio in the background
}
ソリューション#2:
@Leonardによると、これに対する別の回避策もあります
最初のロードで自動再生をトリガーするためだけに何も再生しないiframe
を作成します。
<iframe src="silence.mp3" allow="autoplay" id="audio" style="display:none"></iframe>
mp3ファイルの良いソース silence.mp
次に、実際のオーディオファイルを簡単に再生します。
<audio id="player" autoplay loop>
<source src="audio/source.mp3" type="audio/mp3">
</audio>
個人的には、ソリューション#2を好みます。これは、JavaScriptにあまり依存しないためのよりクリーンなアプローチだからです。
Chromeのオーディオタグの自動再生機能を使用するには、本当にすてきなトリックがあります。
追加する
<iframe src="silence.mp3" allow="autoplay" id="audio"></iframe>
一方、silence.mp3
は0.5秒の沈黙のみです。
この
<audio id="player" autoplay controls><source src="0.mp3" type="audio/mp3"></audio>
その後動作します。
Chromeは、サウンドが再生されたことに気付き、オーディオタグでの自動再生の許可を与えます。
実際にご覧ください: http://deinesv.cf/
2018年4月の時点で、Chromeの自動再生ポリシーが変更されました:
「Chromeの自動再生ポリシーはシンプルです:
次の場合、音声付きの自動再生が許可されます。
また
Chromeの開発者向けサイトには、プログラミング例などの詳細情報があります。これについては、こちらをご覧ください。 https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio に示されているように、この小さなスクリプトを追加するだけです
<head>
<script>
window.onload = function() {
var context = new AudioContext();
}
</script>
</head>
これはあなたが望むように機能します:
<audio autoplay>
<source src="hal_9000_sorry_dave.mp3">
</audio>
Googleは先月、Chrome内の自動再生に関するポリシーを変更しました。こちらをご覧ください アナウンスメント 。
ただし、動画を埋め込み、ミュートされている場合、自動再生は許可されます。 muted
プロパティを追加すると、ビデオの再生を開始できます。
<video autoplay controls muted>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
少なくともこれを使用できます:
document.addEventListener('click', musicPlay);
function musicPlay() {
document.getElementById('ID').play();
document.removeEventListener('click', musicPlay);
}
ユーザーがページの任意の場所をクリックすると、音楽が始まります。
また、EventListenerも即座に削除されるため、オーディオコントロールを使用すると、ユーザーはそれをミュートまたは一時停止でき、他の場所をクリックしても音楽は再開しません。
デフォルトのHTML5 audio autoplay属性はchromeでは機能しませんが、JavaScriptを使用してオーディオの自動再生を強制できます。これを試して:
document.getElementById('myAudio').play();
これは私のために動作します。
Initでplay関数をトリガーするだけです:
var aud = document.getElementById("myAudio");
aud.play(); // this will do the trick :)
<audio id="myAudio">
<source src="https://wiki.selfhtml.org/local/Europahymne.mp3" type="audio/mp3">
</audio>
私は今日これを打ち破りました、そして私は議論に発見したちょっとした骨io品を加えたかっただけです。
とにかく、私はこれをやめました:
<iframe src="silence.mp3" allow="autoplay" id="audio" style="display:none"></iframe>
<audio id="audio" autoplay>
<source src="helloworld.mp3">
</audio>
この:
<audio id="myAudio" src="helloworld.mp3"></audio>
<script type="text/javascript">
document.getElementById("myAudio").play();
</script>
そして最後に、これは、独自のものを生成するだけの場合(範囲外)の範囲外の「ソリューション」です。
<script src='https://code.responsivevoice.org/responsivevoice.js'></script>
<input onclick='responsiveVoice.speak("Hello World");' type='button' value='Play' />
私が発見したこと、そして本当に面白い(奇妙な、奇妙な、ばかげた)部分は、前の2つの場合、f5に適切な打撃を与えることで実際にシステムを打ち負かすことができるということです。繰り返し非常に高速に更新をヒットすると(約5〜10回はトリックを実行する必要があります)、オーディオが自動再生され、その後、単純な更新時に数回再生されて邪悪な方法に戻ります。素晴らしい!
Googleからの発表では、メディアファイルが「自動的に」再生されるためには、ユーザーとサイトの間の対話が行われている必要があるとされています。ですから、これまでに思いついた最高の「解決策」は、ボタンを追加し、ファイルの再生を自動よりも少なくしますが、より安定/信頼性の高いものにすることです。
代わりにiframe
を使用します。
<iframe id="stream" src="YOUTSOURCEAUDIOORVIDEOHERE" frameborder="0"></iframe>
オーディオにタグを付けるコントロール属性を追加し、CSSで非表示にします。そして、すべてがChromeで正常に機能します。
<audio autoplay loop controls id="playAudio">
<source src="audio/source.mp3">
</audio>
一時修正
$(document).on('click', "#buttonStarter", function(evt)
{
var context = new AudioContext();
document.getElementById('audioPlayer').play();
$("#buttonStarter").hide()
$("#Game").show()
});
または、カスタムプレーヤーを使用して再生をトリガーします http://zohararad.github.io/audio5js/
注:自動再生は12月31日に有効になります