在浏览器中启用/禁用同步音轨
Enable/disable simultaneous audio tracks in the browser
我想同步播放多个音轨,并能够在播放时以编程方式启用或禁用音轨。
我尝试将多个音频流放在一个 mp4 文件中,然后设置曲目的启用属性,如下所示:
mySong.audioTracks[n].enabled
但该技术目前仅在IE和Safari中受支持。
这可以通过似乎具有更好浏览器支持的 Web 音频 API 来完成吗?
对于可能的WebAudio解决方案,假设您将mp4文件解码为具有n
通道的AudioBufferSource
,s
。
然后:
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;
您可以通过让每个通道淡入和淡出来变得更花哨。
如果您使用的是HTML5 Audio,则可以使用MDN指南中详述的.play()
和.pause()
命令。
假设您有一个包含五个 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 -->
希望这有帮助!
相关文章:
- 替换视频的音轨
- 使用JavaScript的流式soundcloud音轨;不起作用
- 如何在Javascript中消除音轨之间的停顿
- 在浏览器中启用/禁用同步音轨
- 音轨 JS 功能无法播放或暂停音频
- 音轨在Javascript中循环播放,没有延迟
- 从多个设备同时在多个音轨上录制音频
- 如何从MediaStream中删除音轨;停止“;网络摄像头
- 使用单个控制器控制多个html5音轨
- Javascript:从soundcloud api设置音轨位置
- 使html视频文本音轨中的字幕越来越小
- 将视频音轨src替换为变量
- 如何使用
- 使用soundloud API从用户提要获取所有音轨
- 在播放列表中更新音轨排序
- 用Node.js叠加两个音轨
- 当某个dom元素进入视口时改变音轨
- 如何更改现有流的音轨
- 如何为特定的音轨调用soundcloud sdk
- 如何让Safari(最新版本)在MP4视频中选择默认音轨,当有多个语言音轨嵌入