ユーザーオーディオを録音するアプリを開発しています。オーディオの録音には、getUserMedia API を使用しています。音声の最大長は約 15 分です。キャッシュに保存したくありません。ノードjsサーバーに直接ストリーミングすることでそれを行いました。サーバーはそれをストリーミングしてエンコードし、mp3 ファイルが生成されるようにします。それはこのようなものによって行われます。
var encoder;
var lame = require('lame');
var fs = require('fs');
var encodeAudio = function (data) {
// my own logic here ---- >
// Encode audio is below
encoder = lame.Encoder({
channels: 2,
bitDepth: 16,
sampleRate: 22050,
bitRate: 128,
outSampleRate: 22050,
mode: lame.STEREO
});
encoder.pipe(fs.createWriteStream('/tmp/' + data.name + '/audio.mp3'));
}
encoder.write(new Buffer(data.buffer), function () {
});
}
};
クライアント側
navigator.getUserMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
navigator.getUserMedia({audio: true, video: false}, function (stream) {
var audioContext = window.AudioContext;
var context = new audioContext();
window.audioInput = context.createMediaStreamSource(stream);
var bufferSize = 2048;
var recorder = context.createScriptProcessor(bufferSize, 1, 1);
recorder.onaudioprocess = self.onAudioProcess.bind(self);
audioInput.connect(recorder);
recorder.connect(context.destination);
}, this.onAudioError);
ここでは、クライアント側から socket.io からデータが送信されます。したがって、オーディオのチャンクがクライアントから送信されるたびに、nodejs サーバーはバッファーを作成し、それを mp3 として保存します。
今、WebRTC とその機能について聞きました。ただし、Safari と IE では機能しません。次に、Temasys プラグインを使用して、WebRTC を Safari および IE と互換性を持たせました。しかし、Temasys は録音をサポートしていないため、混乱しています。誰かがこれを行う方法を案内できますか?