2016-11-18 24 views
0

私はユーザーのオーディオを記録するアプリを開発しています。オーディオを録音するために、私はgetUserMedia APIを使用しています。音声の最大長は約15分です。私はそれをキャッシュに保存したくありません。私はノードjsサーバーに直接ストリーミングすることでそれを行いました。サーバーはmp3ファイルをストリームしてエンコードするので、mp3ファイルが生成されます。それはこのようなことによって行われます。マイクロホンで音声を録音するためのwebRTCの使用

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とその機能について聞いたことがあります。しかし、それはサファリとIEでは動作しません。その後、WebRTCをSafariとIEとの互換性を持たせるため、Temasysプラグインを使いました。しかし、テマシスは録音をサポートしていないので、私は混乱しています。誰かがこれを行う方法を導くことができますか?

+0

['MediaRecorder'](https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder)を試しましたか? – jib

答えて

0

私はTemasysで働いています。サービスが既に動作していて、サービスをChromeで実行しているときにサービスを使用してストリームを記録できる場合は、TemasysのAdapterJSをインストールするか、独自のAdapterJSを修正してサービスを "Temasys Plugin Aware" IEまたはSafariを使用するサービスは、Temasys WebRTC Pluginをインストールする必要があります。あなたはここでプラグインの無料版をインストールするには、完全なドキュメントを見つけることができます。https://confluence.temasys.com.sg/display/TWPP

あなたが参加し、特別のWebRTCプラグインのために、Temasysによって維持されることができ、公開メーリングリストもあります:https://groups.google.com/forum/#!forum/temasys-discuss-webrtcplugin

0

私はこれを試してみました既に。しかし、チームは、これを使って上記のようにストリームを記録しバッファリングすることはできないと言いました。上記のコードでは、audioContextがIEとsafariで定義されていないと言っています。 Teamasysのプラグインは他のものを渡しますが、これを渡すことはできません。

関連する問題