Open ntth opened 10 years ago
8d6aa6ed1824753cb2b587ba476b2759f6ed0131 にてボタン押下でビデオチャットが始まるように変更した。
試行錯誤したが、現状のwebrtc.ioの仕組みでは実現困難。 ビデオチャットを開始するという部分が全てラッピングされているため、 自分のカメラ/マイクを登録して初めて相手のストリーム追加イベントが来る。 既に相手がビデオチャットチャンネルに入っている場合、カメラマイク無しだと、こちらから何もトリガーが無いため、P2Pコネクションをはる事が困難。
もし、どうしても実現したいとなると、getUserMediaやシグナリングレベルで制御する必要がある為、webrtc.io.jsに結構な修正か、Peer.js等に乗り換えて再構築する必要がありそう。
今回、ボタン押下で始めるようにしたので、音声のみで開始はボタン作ればvideo: falseにして開始すれば良いだけになったはずなので #128 は簡単に対応可能な状態にはなった
PeerJSは更新も頻繁で将来性ありそうなので調べてみた
結果は、webrtc.ioと同様に、相手からMediaStreamが渡されてきて、その際に自分のローカルストリームを渡す事で接続確定することになっている模様:
Start call
// Call a peer, providing our mediaStream
var call = peer.call('dest-peer-id', mediaStream);
Answer call
peer.on('call', function(call) {
// Answer the call, providing our mediaStream
call.answer(mediaStream);
});
どうもWebRTCはP2Pのコネクションは上り/下りのストリームを必ず確定する必要があるみたい。 とりあえずは音声のみ #128 を実現して、そのあとは、サーバサイドで映像をマージして配信のようなもの凄く大きいハードルとなるようだ。
というわけで、このIssueは遠い未来に飛ばす
MediaStreamオブジェクトを取得する事が出来るようになったので、以下を参考にMediaStream Recordingをキーワードにサーバーサイドにデータを細分化して送り込むことができそう: http://stackoverflow.com/questions/13431251/html5-solution-to-upload-a-webcam-camera-video-stream-to-server#new-answer?newreg=424fed0598a1457b96c01df64b0f9ff5
サーバー側は送られて来たデータをいかに他のユーザーに配信するかというところ。Apacheでストリーミング配信するモジュールとか、HTTPライブストリーミングとか、なにやらキーワードは出てくるが、結局どれがマッチするかまでは判断出来ず。
参加だけ