Intereting Posts
Как определить, какие файлы PHP фактически используются, а какие нет? PHP Преобразование Windows-1251 в UTF 8 Как установить PHP 7 (следующее поколение PHP) на Ubuntu Как хранить 60 булевых элементов в базе данных MySQL? Htaccess: добавить / удалить конечную косую черту из URL CodeIgniter + jQuery UI autocomplete = 500 внутренних ошибок сервера (с кодом) Как авто Войти и перенаправление после регистрации в yii? Вставьте один или несколько наборов полей в базу данных с помощью динамической формы Работает ли кеш-код opcode PHP с __autoload? Facebook api: показать диалоговое окно для страницы выбора пользователя (manage_pages extendend perm) Добавить пользовательское поле на странице «Информация о заказе» на странице Opencart Отправить с бесплатной учетной записи Gmail через PHP Модуль расширения TYPO3 Extbase. Проблема с шаблоном сопоставьте дату с datepicker с доступным днем ​​базы данных и покажите результат Walmart API продавца POST не работает, Дает 401 несанкционированных только на PHP

Как я могу получить аудиофайл из XMLHttpRequest, который может быть декодирован decodeAudioData?

Я хочу воспроизвести аудиофайл с сервера в JavaScript, но я не могу получить правильный формат данных для decodeAudioData для его декодирования.

Вот мой метод получения и воспроизведения аудиоданных в JavaScript:

var source = audioContext.createBufferSource(); var request = new XMLHttpRequest(); request.open('GET', 'https://audioserver.com/getaudio.php', true); request.responseType = 'arraybuffer'; request.onload = function() { var audioData = request.response; audioContext.decodeAudioData(audioData, function(buffer) { source.buffer = buffer; source.connect(audioContext.destination); source.loop = true; }, function(e){"Error with decoding audio data" + e.err}); source.start(0); } request.send(); 

Код моего сервера выглядит следующим образом:

 <?php header('Access-Control-Allow-Origin: *'); $file = "audiofiles/audio.wav"; header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; ?> 

И я также пробовал:

 <?php header('Access-Control-Allow-Origin: *'); $name = './audiofiles/audio.wav'; $fp = fopen($name, 'rb'); header("Content-Type: binary"); header("Content-Length: " . filesize($name)); fpassthru($fp); exit; ?> 

Но оба вышеупомянутых подхода приводят к следующей ошибке в JavaScript:

DOMException: невозможно декодировать аудиоданные

Как я могу получить аудиофайл в JavaScript правильно, чтобы его можно было декодировать и воспроизвести правильно?