首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML5中的音频数据流

HTML5中的音频数据流
EN

Stack Overflow用户
提问于 2011-07-06 16:46:19
回答 2查看 18.6K关注 0票数 17

我正在从服务器接收小块的PCM音频数据,并将它们存储在一个数组中。现在,我想使用一些HTML5功能按顺序播放这些音频块,没有间隙。我认为“可能”的解决方案有两个:

Data URI

  1. HTML5音频标签

当我研究这些选项时,请向我推荐任何其他选项或对我正在考虑的两个选项的看法。虽然跨平台解决方案将是最好的,但我可以满足于Chrome唯一的解决方案,因为

EN

回答 2

Stack Overflow用户

发布于 2011-08-28 09:50:40

安排音频是Web audio API的设计目标。如果您将解码的PCM音频块作为类型化数组(AUDIO_CHUNKS),则可以使用noteOn()为每个块创建音频缓冲区,并在准确的时间(一个接一个)调度它们。类似于:

代码语言:javascript
复制
var startTime = 0;

for (var i = 0, audioChunk; audioChunk = AUDIO_CHUNKS[i]; ++i) {
  // Create/set audio buffer for each chunk
  var audioBuffer = audioCtx.createBuffer(NUM_CHANNELS, NUM_SAMPLES, SAMPLE_RATE);
  audioBuffer.getChannelData(0).set(audioChunk);

  var source = audioCtx.createBufferSource();
  source.buffer = audioBuffer;
  source.noteOn(startTime);
  source.connect(audioCtx.destination);

  startTime += audioBuffer.duration;
}
票数 20
EN

Stack Overflow用户

发布于 2011-08-05 19:49:31

选项1可能不起作用,因为音频标签不能播放原始音频数据(我假设这就是您所说的PCM音频数据,或者我错了?)。每个浏览器都需要特定的编解码器。在音频标签的顶部播放没有间隙的东西是完全不可靠的。

选项2可能行得通。web音频api包含的缓冲区可能会填充原始数据并播放,但我从未尝试过这样做。现在最大的缺点是: a.只有Chrome;b.用户需要通过输入about:flag来配置chrome,并启用Web Audio,这可能会让一些人感到害怕。

第三种选择是音频数据API,这是一种折衷方案。我自己从来没有试过,但从规格来看,它看起来就是你想要的。我不知道如何实现,所以你必须自己做一些研究:) https://wiki.mozilla.org/Audio_Data_API#Writing_Audio

请不要因为我在脑海中给出了这些答案,而且我对HTML5音频还很陌生。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6593738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档