2016-01-17 17 views
12

私はこのコードを使用しています。controlsが表示されたら、自動再生は機能していません。音声タグ自動再生モバイルでは動作しません

​​

とそのモバイル機器での作業と非常によくウェブサイトでは動作しません。 誰も私にこの問題を教えてもらえますか?

おかげで、よくおくる

答えて

5

自動再生がモバイルブラウザでの作業を取得する方法はありません。 (これは許可されていません)

しかし、いくつかのトリックはこれを行います。

いくつかのトリックを表示するには、以下のリンクをクリックして

Autoplay audio on mobile safari

iOS-Specific Considerations | Loop Attribute

+0

...少なくとも私の携帯とFF 54に、音はまだあなたの携帯電話がミュートされている場合でも、再生される、ということにも言及する価値があります'AudioContext'を使ってサウンドを自動再生することができます(私の答えを参照してください) – Xenos

8

あなたはAudioContext APIを使用して任意のArrayBuffer(すなわちからソースを取って音を再生することができます:XMLHttpRequestからかFile

window.addEventListener('load', function() { 
     var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); 
     var source = audioCtx.createBufferSource(); 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', 'audio-autoplay.wav'); 
     xhr.responseType = 'arraybuffer'; 
     xhr.addEventListener('load', function (r) { 
      audioCtx.decodeAudioData(
        xhr.response, 
        function (buffer) { 
         source.buffer = buffer; 
         source.connect(audioCtx.destination); 
         source.loop = false; 
        }); 
      source.start(0); 
     }); 
     xhr.send(); 
    }); 

ChromeとFirefoxの両方のモバイルおよびデスクトップ上の

作品

編集:

それがこの「トリック」が、実際にブラウザのバグとみなすことができることを、IMO、言及する価値がある、ともはやで動作しない可能性がありますブラウザがこれによってユーザーエクスペリエンスが損なわれると判断した場合、いつでも(広告などの)広く使用されている迷惑になります。

それはあなたがaudio`タグ `のための自動再生についての正しい

+0

この解決策は、1 MBを超えるオーディオファイルに対してメモリリークやメモリの大量使用を招くことになります。 1MBのエンコードされたオーディオファイルは、11MBのメモリ内のデコードされたデータバッファになります。 –

+0

@FarzadYZあなたが「メモリリーク」(これは疑わしいことですが、実行されたJSコードの問題ではなく、ブラウザまたはそのような問題、つまりエグゼキュータ)、または「大きなメモリ(オーディオタグと比較して)消費します。 – Xenos

+0

WebオーディオAPIの 'context.decodeAudioData'を使用してオーディオを読み込み、' AudioBufferSourceNode'を作成して再生すると、より柔軟になりますが、重要な注意点があります:それはあなたの携帯電話をクラッシュさせます。その単純な理由があります。ブラウザは、5Mbのmp3ファイルが55Mbのwavファイルと通常等しいので、大容量のオーディオファイルを使用している場合、メモリが不足していることを素早く知ることができるので、デコードされたオーディオクリップ全体をメモリに保存する必要があります。それが起こると、あなたがそれについて知る方法は、タブ全体がkaputになることです。 –

関連する問題