У меня есть код, который отлично работает на рабочем столе в Chrome и Firefox, и теперь я пытаюсь заставить его работать на Chrome в Android. Я создал звук в браузере и хотел бы представить элемент управления звуком, чтобы пользователь мог нажать кнопку воспроизведения. Вот окончательный вид элемента управления:
<audio controls src="blob:https%3A//mydomain.com/5b7cbd96-b204-4b1c-8de3-9fb212c37928"></audio>
Я попытался воспроизвести файл из браузера следующим образом:
<audio controls src="/sample.wav"></audio>
И это сработало нормально, поэтому я знаю, что управление звуком может воспроизводить файлы WAV.
Элементы управления тоже выглядят иначе. Тот, что играет с сервера, содержит тайминг, то есть «0:00/1:23». Тот, который создан в JavaScript, содержит только «0:00». Это наводит меня на мысль, что элемент управления на самом деле не загружал звук, но я понятия не имею, почему.
Я распечатал некоторую отладочную информацию о большом двоичном объекте и вижу, что сообщаемый размер составляет 184 440, а сообщаемый тип - «аудио/wav».
То, как я создал URL-адрес, который я поместил в src аудио, выглядит следующим образом:
// dataView is of type DavaView, and contains the WAV.
var audioBlob = new Blob([dataView], { type: "audio/wav" });
var url = URL.createObjectURL(audioBlob);
Как я буду отлаживать это дальше? Или есть другой способ настроить управление звуком для Android?
Спасибо!
Обновление:
Я не решил эту проблему, но я работал над ней. Вместо использования элемента управления <audio>
для воспроизведения я использую AudioBuffer
напрямую:
var source = audioCtx.createBufferSource();
var audioBuffer = audioCtx.createBuffer(1, sampleArray.length, audioCtx.sampleRate);
audioBuffer.copyToChannel(sampleArray);
source.buffer = audioBuffer;
source.connect(audioCtx.destination);
source.start();
new Audio()
сobjectURL
в качестве параметра, вызвавaudio.load()
передaudio.play()
, см. stackoverflow.com/questions/33755524/ - person guest271314   schedule 26.01.2016