Javascript 如何使用node server制作实时音频流?
我想以音频流为生。我用管道从节点服务器传输我的mp3文件,没有问题。我在客户端播放mp3,但它只在流结束时播放。我想在流继续时播放它。我怎么做 服务器端Javascript 如何使用node server制作实时音频流?,javascript,audio,socket.io,live-streaming,internet-radio,Javascript,Audio,Socket.io,Live Streaming,Internet Radio,我想以音频流为生。我用管道从节点服务器传输我的mp3文件,没有问题。我在客户端播放mp3,但它只在流结束时播放。我想在流继续时播放它。我怎么做 服务器端 var stream = ss.createStream(); ss(socket).emit('H_to_S_shareVoice', stream); var filename = 'musix' + '.mp3'; console.log(filename); fs.c
var stream = ss.createStream();
ss(socket).emit('H_to_S_shareVoice', stream);
var filename = 'musix' + '.mp3';
console.log(filename);
fs.createReadStream(filename).pipe(stream);
客户端
不相连
$(文档).ready(函数(){
$(函数(){
var socket=io.connect('http://localhost:4000');
socket.on(“连接”,函数(){
console.log(“on connect”);
document.getElementById('socket')。innerHTML='connected to the server';
ss(套接字).on('H_to_S_shareVoice',函数(流、数据){
console.log('已接收',数据);
var binaryString=“”;
stream.on('data',函数(data){
console.log('data'))
console.log(data.length)
对于(变量i=0;i0&&oneTime){
一次性=假;
}*/
//$(“#audio”).attr(“src”,“data:audio/wav;base64,”+window.btoa(二进制字符串));
binaryString=“”
});
/*stream.on('end',函数(数据){
console.log('end')
document.write(二进制字符串);
$(“#audio”).attr(“src”,“data:audio/wav;base64,”+window.btoa(二进制字符串));
binaryString=“”;
});*/
});
});
});
});
删除所有Socket.IO代码和整个base64编码混乱
当请求传入时,您所要做的就是通过HTTP输出媒体数据。您的客户端代码非常简单,就像我用PCMPlayer修复的那样
var player = new PCMPlayer({
encoding: '16bitInt',
channels: 2,
sampleRate: 16000,
flushingTime: 1000
});
stream.on('data', function (data) {
console.log(data)
player.feed(data);
});
谢谢你的回答。我用PCMPlayer修复了它。@oguzkaganeren那太不幸了。。。这将占用大量带宽。我可以按照您的方式向每个客户发送不同的数据吗?你能推荐一些来源吗?
$(document).ready(function () {
$(function () {
var socket = io.connect('http://localhost:4000');
socket.on("connect", function () {
console.log("on connect");
document.getElementById('socket').innerHTML = 'connected to the server';
ss(socket).on('H_to_S_shareVoice', function (stream, data) {
console.log('received', data);
var binaryString = "";
stream.on('data', function (data) {
console.log('data')
console.log(data.length)
for (var i = 0; i < data.length; i++) {
binaryString += String.fromCharCode(data[i]);
}
$("#audio").attr("src", "data:audio/wav;base64," + window.btoa(binaryString));
document.getElementById('audio').load();
document.getElementById('audio').play();
//document.getElementById('test').innerHTML = window.btoa(binaryString);
/*if (dat.length > 0 && oneTime) {
oneTime = false;
}*/
// $("#audio").attr("src", "data:audio/wav;base64," + window.btoa(binaryString));
binaryString = ""
});
/*stream.on('end', function (data) {
console.log('end')
document.write(binaryString);
$("#audio").attr("src", "data:audio/wav;base64," + window.btoa(binaryString));
binaryString = "";
});*/
});
});
});
});
</script>
var player = new PCMPlayer({
encoding: '16bitInt',
channels: 2,
sampleRate: 16000,
flushingTime: 1000
});
stream.on('data', function (data) {
console.log(data)
player.feed(data);
});