1

私は Android デバイスの Chrome ブラウザからアクセスするための Web サイトを構築しているので、コードを動作させたいと思っている唯一のブラウザです。

オブジェクトをクリックしたときにサウンドを再生できるようにしたいと考えています。しかし、今のところ、応答が非常に遅く、4〜5秒に1回クリックしないと音が追いつかない. 素早くタップして、音を維持できるようにしたいです。

Android タブレットの Chrome で正常に動作するように、javascript を介してオーディオ (wav ファイル) を再生する最良の方法は何ですか?

現在、<audio>タグを使用してから、javascript を使用してファイルを再生しています。(パソコンの Chrome ブラウザでは問題なく動作し、音の速さも問題ありませんが、Android タブレットでは音の遅れがひどいです。何らかの理由でサウンドがプリロードされていないかのようです) 、タブレット上)。

私の現在のコード

私の<body>タグのすぐ下:

<audio id="audiotag1" src="ding.wav" preload="auto"></audio>

ユーザーが画面をタップしたとき

function registerTouch(mouse) {
   play_multi_sound('audiotag1');
}



var channel_max = 3;                                        // number of channels
    audiochannels = new Array();
    for (a=0;a<channel_max;a++) {                                   // prepare the channels
        audiochannels[a] = new Array();
        audiochannels[a]['channel'] = new Audio();                      // create a new audio object
        audiochannels[a]['finished'] = -1;                          // expected end time for this channel
    }

function play_multi_sound(s) {
    for (a=0;a<audiochannels.length;a++) {
        thistime = new Date();
        if (audiochannels[a]['finished'] < thistime.getTime()) {            // is this channel finished?
            audiochannels[a]['finished'] = thistime.getTime() + document.getElementById(s).duration*1000;
            audiochannels[a]['channel'].src = document.getElementById(s).src;
            audiochannels[a]['channel'].load();
            audiochannels[a]['channel'].play();
            break;
        }
    }
}
4

1 に答える 1

0

ほとんどのモバイル ブラウザは、帯域幅を節約するためにオーディオ/ビデオをプリロードしません。

preload 属性は、Safari 5.0 以降でサポートされています。iOS の Safari はプリロードされません。

https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/AudioandVideoTagBasics/AudioandVideoTagBasics.html#//apple_ref/doc/uid/TP40009523-CH2-SW9

于 2013-08-31T03:12:39.007 に答える