2016-03-07 3 views
0

Я хочу одновременно воспроизводить несколько звуковых дорожек и синхронизировать их во время воспроизведения.Включить/отключить одновременные звуковые дорожки в браузере

Я попытался положить несколько звуковых потоков в одном mp4 файл, а затем установить с поддержкой свойства трека, как это:

mySong.audioTracks[n].enabled 

Но эта техника в настоящее время в IE и Safari только supported.

Это что-то, что можно сделать с помощью API веб-аудио, который, кажется, имеет лучшую поддержку браузера?

ответ

0

Если вы используете HTML5 Audio, вы можете использовать команды .play() и .pause(), как описано в MDN's guide.

Предположим, у вас есть страница с пятью аудиоэлементами HTML5, каждая из которых имеет класс .song1. Если Вы желаете остановиться и начать все треки в то же время, вы можете назначить кнопки для запуска:

document.getElementsByClassName("song1").play(); 

и

document.getElementsByClassName("song1").pause(); 

Если вы желаете, чтобы выключить звук дорожки в то время как другие продолжают игра, вы можете установить его громкость на 0 тоже программно:

getElementsByTagName("audio")[0].volume=0; <!-- Mute track 1 --> 

или

getElementsByTagName("audio")[2].volume=0; <!-- Mute track 3 etc --> 

Надеюсь, это поможет!

+0

Проблема с этой техникой заключается в том, что нет никакой гарантии, что треки начнут и останутся в синхронизации. – Duvrai

+0

Я никогда не использовал этот метод раньше, поэтому я не знаю, что это недостатки. Что может привести к тому, что звук перестанет синхронизироваться? – luc122c

1

Для возможного решения WebAudio предположим, что ваш файл mp4 декодирован в AudioBufferSource, s, с n каналами.

Тогда:

var splitter = context.createSplitter(n); 
s.connect(splitter); 

for (k = 0; k < n; ++k) { 
    gains[k] = context.createGain(); 
    spitter.connect(gains[k], k, 0); 
    gains[k].connect(context.destination); 
} 

// To disable channel m: 
gains[m].gain.value = 0; 
// To re-enable channel m: 
gains[m].gain.value = 1; 

Вы можете получить новые идеи, имея каждый канал замирание и исчезать тоже.