我正在通过websockets发送编码的实时音频流(mp3或ogg),我想用网络音频api播放它。 我读了几遍,但到目前为止没有任何工作......
我总是尝试使用decodeAudioData方法。 但是这种方法无法处理连续流。 所以我的最后一种方法就是:
ws.onmessage = function (evt) {
context.decodeAudioData(evt.data, function (decodedData) {
source = context.createBufferSource();
source.buffer = decodedData;
source.start(startTime);
source.connect(context.destination);
startTime += decodedData.duration;
},
function(e) {
var test = e;
}
);
};
这至少适用于mp3,但不是很好。收到的块之间有一个非常小的休息时间。所以没有流的流畅播放。我不知道是什么原因...也许decodeData.duration属性不够准确或者在任何地方都有某种延迟。
无论如何,它根本不适用于ogg文件。我可以听到第一个收到的块,但其余的被忽略了。也许这与丢失的标题有关?
web audio api中是否还有其他方法可以播放编码的直播流,然后是decodeAudioData?我找不到任何东西......
感谢您的帮助!
答案 0 :(得分:1)
如果您能提供帮助,请不要通过网络套接字执行此操作。让浏览器完成其工作并通过HTTP播放。否则你必须重新发明一切。
如果你因某种原因坚持重新发明一切,你必须:
如何处理这些项目取决于您的具体需求和实施情况,因此如果您遇到任何问题,我建议您将问题分开。