Реализация Safari Web Audio API не только имеет префикс, но, к сожалению, также сильно устарела.Метод connect()
всегда возвращает undefined
в Safari.
Чтобы ваш пример работал в Safari, вы можете переписать строку 2 и разделить строку 5 на два вызова.
const $audioPlayer = document.querySelector('.audio-player'); // unchanged
const audio = new webkitAudioContext();
const gainNode = audio.createGain(); // unchanged
const source = audio.createMediaElementSource($audioPlayer); // unchanged
source.connect(gainNode);
gainNode.connect(audio.destination);
ЕслиВы хотите написать свой код, как если бы он предназначался для новейшей итерации Web Audio API, которую вы можете использовать в библиотеке.
Я являюсь автором standard-audio-context .Существует также web-audio-api-shim , который также заполняет метод connect()
.
Чтобы использовать библиотеку стандартизированного аудио-контекста, вам просто нужно добавить оператор импортак вашему коду.
import { AudioContext } from 'standardized-audio-context';
// everything else can be left unchanged
const $audioPlayer = document.querySelector('.audio-player');
const audio = new AudioContext();
const gainNode = audio.createGain();
const source = audio.createMediaElementSource($audioPlayer);
source
.connect(gainNode)
.connect(audio.destination);