Проблема AudioContext decodeAudioData в Safari

Я хочу декодировать содержимое .ogg в ArrayBuffer.

У меня есть следующий код в моем компоненте приложения Angular:

ngOnInit() {
  (window as any).AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;
  this.audioContext = new AudioContext();
}

myFunction(oggArrayBuffer) {
  this.audioContext.decodeAudioData(oggArrayBuffer, function(buffer) {
    console.log('decoded audio data', buffer);
  },
  function(e) { console.log('Error with decoding audio data', e); });
}

Это работает в Chrome, но в Safari 11 возникает ошибка:

Ошибка при декодировании аудиоданных null

Что я мог упустить?


person user5155835    schedule 18.11.2019    source источник
comment
Есть тестовый файл? Какая именно версия Safari? Мобильный или настольный? С удовольствием посмотрел.   -  person AnthumChris    schedule 15.12.2019


Ответы (1)


На сегодняшний день Safari по-прежнему не поддерживает декодирование файлов OGG с помощью decodeAudioData(). Поскольку каждый браузер поддерживает свой набор кодеков, я могу только порекомендовать Decode this!, чтобы проверить поддержку различных типов файлов. прямо в браузере.

API веб-аудио не требует, чтобы браузеры поддерживали все без исключения кодеки, поэтому поддержка кодеков отличается от браузера к браузеру. Но браузеры должны отклонять decodeAudioData() с EncodingError, если они не могут что-то декодировать. Safari просто отклоняет null для некоторых файлов, что является ошибкой. Если вы хотите, чтобы Safari вел себя последовательно, вы можете использовать standardized-audio-context, который имеет исправить это.

person chrisguttandin    schedule 25.01.2020