#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.