WebRTCendpointからRTPendpointへのKurentoのブリッジを使用しようとしています。 webRTCendpointクライアントはChromeブラウザです。 RTPendpointクライアントはSIPサーバ(プロキシ/ B2BUA)です。WebRTCEndpointをRTPEndpointに接続するためのKurentoのAPIについての明確化が必要
//On receipt of offer from the WebRTC Browser-Peer
mySignalling.on('sdpOffer', function(sdpOffer) { //Action starts!
//Create Mediapipeline so that endpoints can be created
kurentoClient.create('MediaPipeline', function(error, pipeline) {
pipeline.create('webRtcEndpoint', function(error, myWebrtcEndpoint) {
//Get ICE Candidates from webRTC endpoint to send to browser
mySignalling.on('candidate', function(candidate) {
myWebrtcEndpoint.addIceCandidate(candidate);
});
myWebrtcEndpoint.on('OnIceCandidate', function(event) {
var candidate = kurento.register.complexTypes.IceCandidate(event.candidate);
mySignalling.send(candidate); //Send ICE candidate to webRTC browser peer
});
pipeline.create('rtpEndpoint', function(error,myRtpEndpoint) {
myWebrtcEndpoint.connect(myrtpEndpoint,function(error){ });
myWebrtcEndpoint.processOffer(sdpOffer, function(error, sdpAnswer) {
mySignalling.send(sdpAnswer); //Send answersdp to browser
});
myRtpEndpoint.generateOffer(function(error){
myRtpEndpoint.getLocalSessionDescriptor(function(error, sdpRTP) {
mySignalling2.send(sdpRTP); //Send SDP to Asterisk as part of SIP INVITE
});
});
});
});
});
});
私はいくつかの質問があります:
- 全体的な構造は正しいですがここでは(私は私のアプリサーバにKurento-client.jsを使用しています)私が持っている基本的なコードまたは擬似コードはありますか?
- webRTCEndpoint.gatherCandidatesの使用方法を教えてください。ドキュメントには、processOfferの後に呼び出さなければならないと書かれています。どうして?どのようにaddIceCandidateメソッドに接続されていますか?
- RTPendpointはwebrtcEndpointに接続されますが、RTPEndpoint generateOfferによって生成されるRTPプロファイルを制御するにはどうすればよいですか?つまり、RTP/AVPFをRTPEndpointから取得するのではなく、どうすればよいのですか?そうでない場合、AVPFをAVPにマッピングする必要がある場合、AVPFからAVPにブリッジする際に、AVPFの「F」を処理することになります。
私が側としてなど、シンプル、エラー処理、OnIceGatheringDoneイベント処理、マルチユーザー/セッションのための準備のために、
を追加していない、私は、アプリケーションサーバに自分のSIPリクエストを構築していますSIP応答を処理するステップとを含む。必要に応じて、RTPEndpoint.generateOfferによって生成されたSDPを必要に応じて変更します。私はこの初期のハードルを乗り越えて、その時点になるでしょう!
ありがとうございました。ポイント2:オファーを処理したり回答を生成する前にgatherCandidatesを呼び出すと、SDPのオファーまたは回答にその候補が追加され、バニラICEを使用します。私が理解しているように、ブラウザでは、setLocalDescriptionの呼び出し後にローカルのICE候補が起動します。 「バニラ」ICEではなく、ブラウザが正確な候補を生成するための情報を取得するので意味をなさない。したがって、Kurentoでは、リモートオファーが処理され、回答が生成されるまで、候補者は解雇されるべきではありません。 gatherCandidatesメソッドは必要ありません。私は何が欠けていますか? – Sam
ポイント3:私は両方の端からメディアフローとRTPEndpointを使用するつもりです。 「mangled SDP」とは、手書きSDPを意味しますか? RTPEndpointからSIPコールをブリッジし、SIP電話機でサポートされているSDPを事前に知っているので、私はrtpEndpointを持つことができます。SIP電話機のSDPに基づいてprocessOfferを実行するか、私が想像するgenerateOfferを開始することができます。私は、SIP INVITEリクエストとともにタグ付けできるKurentoのSDPまたはすべてのRTP機能を私に与えます。どちらが良いですか? ** KurentoでサポートされているRTPプロファイルに関するドキュメントはありますか?** RTPEndpointのAVPFはサポートされていますか? – Sam
rtpEndpoint [here](https://doc-kurento.readthedocs.io/en/stable/_static/langdoc/jsdoc/kurento-client-js/module-elements.RtpEndpoint.html)のドキュメントには、 generateOffer、getLocalSessionDescriptorなどのメソッド...または私は間違った場所を探していますか? – Sam