Я разрабатываю аудиоплеер HTML5 для использования специально на iPhone, и пытаюсь получить визуализатор EQ. Из того, что я нашел, что есть два способа установить это:Получение аудио визуализации с использованием API веб-аудио для работы на iOS
One, где вы загружаете файл mp3 по запросу с использованием XMLHttpRequest:
var request = new XMLHttpRequest();
request.open('GET', 'sampler.mp3', true);
request.responseType = 'arraybuffer';
request.addEventListener('load', bufferSound, false);
request.send();
function bufferSound(event) {
var request = event.target;
var buffer = myAudioContext.createBuffer(request.response, false);
source = myAudioContext.createBufferSource();
source.buffer = buffer;
}
Затем используйте source.noteOn и source.noteOff для воспроизведения и приостановки звука. Работая таким образом, я могу получить визуализацию EQ. НО, вам нужно подождать, пока mp3-файл полностью загрузится, чтобы начать играть, что не будет работать в нашей ситуации.
Другой способ сделать это, чтобы иметь <audio>
элемент уже на странице, и вы получите аудиоданные от использования:
source = myAudioContext.createMediaElementSource(document.querySelector('audio'));
Вы затем использовать воспроизведение аудио тега и паузы функции. Это решает проблему загрузки, так как позволяет воспроизводить медиафайлы сразу после загрузки страницы ... НО, визуализация EQ исчезла.
Оба метода показывает EQ при тестировании на Chrome (WIN), так что, кажется, что-то конкретное с прошивкой/iPhone, который не позволяет мне получить данные из <audio>
тега, но позволит мне чтобы получить его, если я загружаю mp3-файл по требованию.
...
Любые идеи?
И вот это ... человек, я довольно долго искал и не видел этого поста. Плюс у меня нет iPhone, поэтому я должен протестировать его на другом, и еще не смог его отладить. В любом случае спасибо за помощь. – jhallmusic
Нет проблем. Я был так же разочарован, как и ты. Надеюсь, Mozilla не будет иметь такую же проблему, как только они реализуют «MediaElementSource» -_- – idbehold
Истинный истинный ... Я сообщил об ошибке непосредственно Apple, хотя я предполагаю, что это ничего не может сделать. :) – jhallmusic