getUserMedia()
を使用してオーディオデータをキャプチャしており、MySQLフィールドにBlobとして保存できるようにサーバーに送信したい。
これが私がやろうとしていることのすべてです。 WebRTCを使用してこれを行うためにいくつかの試みをしましたが、現時点ではこれが正しいのか、それを行うための最良の方法であるのかさえわかりません。
anybody助けてもらえますか?
マイクから音声をキャプチャするために使用しているコードは次のとおりです。
navigator.getUserMedia({
video:false,
audio:true,
},function(mediaStream){
// output mediaStream to speakers:
var mediaStreamSource=audioContext.createMediaStreamSource(mediaStream);
mediaStreamSource.connect(audioContext.destintion);
// send mediaStream to server:
// WebRTC code? not sure about this...
var RTCconfig={};
var conn=new RTCPeerConnection(RTCconfig);
// ???
},function(error){
console.log('getUserMedia() fail.');
console.log(error);
});
このmediaStream
をサーバーに送信するにはどうすればよいですか?
周りをグーグルで調べた後、WebRTC
を調べてきましたが、これは単にピアツーピア通信用のようです-実際、今私はこれをもっと調べています。これが道だと思います。クライアントのブラウザからホストWebサーバーまで通信する方法のように思えますが、私が試みることはほとんど機能しません。
私は W3Cのドキュメント (これは抽象的すぎると感じています)を通り抜けてきました HTML5 Rocksのこの記事 (これは育ちつつあります)回答よりも多くの質問)。どうやらシグナリング方式が必要なようですが、mediaStreams、XHR、XMPP、SIP、Socket.ioなどを送信するのに最適なシグナリング方式は誰でもアドバイスできますか?
WebRTCの受信をサポートするためにサーバーで必要なものは何ですか?私のWebサーバーは基本的なLAMPスタックを実行しています。
また、mediaStream
の記録が完了するまで待ってからサーバーに送信するのがベストでしょうか、それとも記録されているmediaStream
を送信する方が良いでしょうか?これを正しい方法で行おうとしているかどうかを知りたい。 javascriptとHTML5でファイルアップローダーを作成しましたが、これらのmediaStreams
のいずれかをアップロードすることは地獄のように複雑に思え、適切に近づいているかどうかわかりません。
これに関する助けは大歓迎です。
ライブストリーム自体の実行中はアップロードできません。これは、ライブストリームであるためです。
そのため、これにはいくつかのオプションがあります。
ストリームの送信を待機するか、チャンクで送信するかについては、記録している時間に依存します。長時間の場合は、クライアント側から大きなオーディオファイルをアップロードして保存するのはクライアントにとって困難になる可能性があるため、録音をチャンクで送信するか、Websocket経由でアクティブにオーディオパケットを送信する方が優れたソリューションです。
Firefoxには実際には 独自の記録ソリューション がありますが、chromeではサポートされていないため、状況によっては動作しない可能性があります。
余談ですが、前述のシグナリング方法はセッションの構築/破棄用であり、実際にはメディア自体とは関係ありません。おそらく上記のソリューション番号4を使用している場合にのみ、これについて本当に心配するでしょう。
適切なAPIは MediaRecorder API ですが、Web Audio APIほどサポートされていないため、ScriptNodeを使用するか、 Recorder.js (またはbase独自のスクリプトノードを構築するために)。