Safari: AudioContext MediaElementAudioSourceNode не учитывает скорость воспроизведения

#audio #safari #mediaelement #audiocontext #webkitaudiocontext

#Аудио #safari #mediaelement #audiocontext #webkitaudiocontext

Вопрос:

В настоящее время я работаю над приложением, которое использует API AudioContext для управления звуком как для видеоклипов, так и для фонового звука. Мы хотели бы использовать AudioContext (и, следовательно MediaElementAudioSourceNodes , ), чтобы мы могли программно вносить изменения в аудио.

Поскольку приложение синхронизирует носитель с временной шкалой, это часто означает настройку playbackRate элемента мультимедиа, чтобы догнать его. В Chrome это работает нормально: вы настраиваете playbackRate , и носитель соответственно ускоряется или замедляется. Теперь в Safari любой звук, передаваемый через a MediaElementAudioSourceNode , не будет учитывать измененный носитель playbackRate , воспроизводя звук с нормальной скоростью, а затем отключится через несколько секунд. (Safari audio будет учитывать playbackRate при воспроизведении непосредственно с медиа-элемента, особенно без коррекции высоты тона, но это отдельная известная проблема)

Вот CodeSandbox, который повторяет проблему.Первый проигрыватель на странице будет воспроизводить аудио, поступающее непосредственно из HTMLMediaElement , где, поскольку второй проигрыватель будет передавать его через MediaElementAudioSourceNode .

Мы попробовали пару других способов, например, использовать an AudioBufferSourceNode для источника звука, но из-за размера клипа, с которым мы часто работаем, это нежелательный способ. Если это вообще возможно, мы хотели бы по-прежнему использовать AudioContext API как для Chrome, так и для Safari.