【发布时间】:2014-06-01 22:18:04
【问题描述】:
我有一个桌面应用程序,它通过 websocket 连接将原始 PCM 数据流式传输到我的浏览器。流看起来像这样...\\x00\\x00\\x02\\x00\\x01\\x00\\x00\\x00\\x01\\x00\\xff\\xff\\xff\\xff\\...。
问题很简单:我可以使用 Web Audio API / WebRTC / ... 播放这样的 HTML 流吗?
非常欢迎任何建议!
代码编辑
此代码播放噪音,随机生成:
function myPCMSource() {
return Math.random() * 2 - 3;
}
var audioContext;
try {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
audioContext = new AudioContext();
} catch(e) {
alert('Web Audio API is not supported in this browser');
}
var bufferSize = 4096;
var myPCMProcessingNode = audioContext.createScriptProcessor(bufferSize, 1, 1);
myPCMProcessingNode.onaudioprocess = function(e) {
var output = e.outputBuffer.getChannelData(0);
for (var i = 0; i < bufferSize; i++) {
output[i] = myPCMSource();
}
}
因此,将 myPCMSource() 更改为 websocket 流输入,应该可以使其以某种方式工作。但事实并非如此。我没有收到任何错误,但 API 没有播放任何声音或噪音。
【问题讨论】:
-
不确定是否有现成的解决方案。但是应该可以使用 WebAudioAPI 和它的 ScriptNode。也许我应该坐下来写一篇。您是否使用任何特定框架来发出 websocket 流?
-
我的应用程序是用 Python 编写的,我使用的是 websocket-client 库。我还发现了这篇文章,有人试图实现同样的目标 (code.google.com/p/chromium/issues/detail?id=250989),但仍然没有成功
标签: html audio html5-audio web-audio-api