首页 文章

关于html Web Audio Api和<audio>标签的困惑

提问于
浏览
2

我是一个html5新手,对音频标签和网络音频api有一些困惑 . 我目前正在为我们的音频播放器开发自定义音频擦除器 . 洗涤器将有一个进度条和某种时间指示器 . 用户应该能够拖动进度条并播放音频 .

当前的音频播放器一次只播放一小块mp3,然后通过向服务器发送请求(轮询)定期加载 . 我理解使用标签你必须提供src但是考虑到正在加载小块而不是1个单片机我也想看看我是否可以从web音频api捕获事件 . 创建和播放音频的方式是以下列方式使用web audio api:

soundSource = context.createBufferSource();
soundBuffer = context.createBuffer()
soundSource.buffer = soundBuffer;
soundSource.connect(context.destination);

我不明白的是音频标签和目标节点之间的关系 .

如何将目标节点定向到音频标签?我可以从网络音频API(播放,暂停,更新时间)中捕获事件吗?基本上我希望能够在流媒体音频播放器上编写事件监听器,该播放器一次播放小块并将它们全部绑定到自定义滑块 . 任何人都可以帮助我或提供一些指示吗?

戈登

1 回答

  • 1

    好 . 我认为你不能将 context.destination 的输出重定向到任何其他组件 . 您可以将 context.destination 视为扬声器 . 无论你发送什么内容都会立即播出 .

    因此,WebAudio API和Audio标签之间没有太多关系 . 各种浏览器中的Audio标签实现可能实际上是在幕后使用WebAudioAPI,但是没有任何面向公众的API来更改音频标签行为 .

    音频标签虽然支持所有standard Media Events .

    然而,Audio标签和WebAudio API之间有一个很小的桥梁 . 您可以将Audio标签中的音频用作WebAudioAPI中的音频源 . 这是context.createMediaElementSource API in WebAudio .

    最后,擦洗 . 如果你想能够擦除"realtime",那么你必须将整个音频文件放在内存中 . 这样你就可以跳到用户想要擦洗到几乎瞬间的位置 . 使用 AudioBuffer ,您可以使用ScriptProcessorNode根据滑块的位置更正音频的输出块 .

相关问题