Node.js仅在alsa的iscord停止录制时才传输音频

时间:2015-01-28 13:29:03

标签: javascript node.js sockets audio socket.io

我一直在尝试使用Socket.io和Node.js麦克风库创建Node.js音频流脚本。

问题是,当SoX / ALSA仍在录制音频时,Socket.io不会将音频传输到远程服务器。

audio-stream-tx(客户端):

var io = require('socket.io-client');
var ss = require('socket.io-stream');
var mic = require('microphone');
var fs = require('fs');

var socket = io.connect('ws://localhost:25566');
var stream = ss.createStream();

ss(socket).emit('stream-data', stream);

mic.startCapture();

mic.audioStream.pipe(stream);

process.on('SIGINT', function () {
    mic.stopCapture();
    console.log('Got SIGINT. Press Control-D to exit.');
});

audio-stream-rx(服务器):

var io = require('socket.io')();
var ss = require('socket.io-stream');
var fs = require('fs');

var port = 25566;

io.on('connection', function (socket) {
    ss(socket).on('stream-data', function(stream, data) {
        console.log('Incoming> Receiving data stream.');
        stream.pipe(fs.createWriteStream(Date.now() + ".wav", { flags: 'a' }));
    });
});

io.listen(port);

microphone library会产生SoX / ALSA命令(取决于平台)来录制麦克风的音频。上面的脚本工作正常。只是在调用mic.stopCapture()后,音频数据才会传送到流。

是否有一种解决方法可以在调用mic.startCapture()时强制socket.io-stream传输音频数据?

0 个答案:

没有答案