javascript - получить в данный момент воспроизводимый объект Web Audio API(не <audio>) - PullRequest
0 голосов
/ 06 апреля 2019

Я создаю плагин для soundcloud.com (и YouTube), который должен управлять музыкой с помощью глобальных сочетаний клавиш через локальный процесс node.js, который взаимодействует с веб-частью через socket.io.

Я могу просто контролировать элемент <video> с помощью querySelector на YouTube.В soundcloud нигде на странице нет элемента <audio>, поэтому он, вероятно, должен использовать WebAudioAPI .До сих пор я могу обойти это хакерским способом, вызывая .click() на кнопках воспроизведения и пропуска.

Я также хочу контролировать громкость, и обе мои идеи, похоже, не работают.

Я пытался переместить ползунок громкости, создав mousedown, mousemove и mouseup MouseEvents на дескрипторе ползунка, но это не помогло.

const e = {
  down: new MouseEvent("mousedown", {
    cancelable: false,
  }),
  up: new MouseEvent("mouseup", {
    cancelable: false,
  }),
  move: new MouseEvent("mousemove", {
    cancelable: false,
    movementY: 10,
  }),
  test(el) {
    el.dispatchEvent(e.down)
    el.dispatchEvent(e.move)
    el.dispatchEvent(e.up)
  },
}
// the volume slider handle
e.test($0) 

И я искал способ добраться до объекта контекста Audio, переопределив функцию AudioContext() и выполнив поиск в javascript-файле soundcloud на предмет «AudioContext».

Это только дваидеи о том, как решить это, что я могу придумать.

tl; dr

Есть ли способ управления громкостью звука на soundcloud.com через javascript?

...