WebRTC: comment ajouter stream après offre et réponse?
je travaille sur l'appel vidéo de webRTC. J'ai réussi à implémenter datachannel. Maintenant, je voudrais ajouter le flux vidéo à la même connexion de pair.
j'ai lu que stream devrait être ajouté avant Réponse et offre. Y a-t-il un moyen d'ajouter stream après réponse ou Offre?
dans le cas où j'ai ajouté stream Avant offre ou réponse, Comment pourrais-je arrêter le streaming et le recommencer quand nécessaire?
pourrait-il y avoir des problèmes à maintenir autant flux?
3 réponses
pour ajouter un flux après avoir créé la signalisation complète, la connexion par les pairs devrait renégocier avec stream.
pc1.addstream(stream)
puis encore une fois créer une offre et l'Envoyer à un autre Pair.
Remote peer ajoute stream et send answer SDP.
Pour arrêter le flux:
stream.stop();
pc1.removeStream(stream);
D'après mon expérience, ce que Konga Raju a conseillé n'a pas fonctionné. Je ne pouvais pas envoyer une "offre mise à jour" et avoir la vidéo en streaming réellement se produire.
j'ai trouvé que cette séquence d'événements fonctionne pour mon cas, dans lequel je souhaite diffuser la vidéo de pair 1 à pair 2.
- mettre en place un moyen pour les pairs pour échanger des messages. (La variation dans la façon dont les gens accomplissent ceci est ce qui rend différents échantillons de code WebRTC si incommensurable, malheureusement.)
- Sur chaque côté, configurer des gestionnaires pour les importants événements de signalisation. (Certaines personnes ont signalé que vous devez créer ces gestionnaires à des moments spéciaux, mais je n'ai pas trouvé que ce soit le cas.
) Il y a 3 événements:
- une glace candidat envoyé de l'autre côté ==> appel
addIceCandidate
avec - une offre de message ==>
SetRemoteDescription
et apporter une réponse et l'envoyer - un message de réponse ===>
SetRemoteDescription
- une glace candidat envoyé de l'autre côté ==> appel
- de chaque côté, Créer le objet peerconnection avec les gestionnaires d'événements qui nous tiennent à cœur: onicecandidate, onremovestream, onaddstream, etc.
- glace candidat qui sort de la peerconnection objet ===> envoyer de l'autre côté
- lorsque les deux pairs sont présents et que tous les gestionnaires sont en place, le pair 1 reçoit un message de déclenchement pour lancer la capture vidéo (le
getUserMedia
appel) - une Fois
getUserMedia
réussit, nous avons un flux. AppeleraddStream
sur la connexion par les pairs objet. - Puis par les pairs 1 fait une offre
- en raison des gestionnaires que nous avons mis en place plus tôt, peer 2 envoie une réponse
- concurremment avec ceci (et plutôt opaquely), l'objet peer connection commence à produire des candidats ice. Ils sont envoyés de part et d'autre entre les deux pairs et manipulés (étapes 2 et 3 ci-dessus)
- Le Streaming commence par lui-même, opaquely, à la suite de 2 conditions:
- échange d'offres/réponses
- candidats à l'eirc reçu, échangé et manipulé
Je n'ai pas trouvé le moyen d'ajouter une vidéo après l'étape 9. Quand je veux changer quelque chose, je retourne à l'étape 3.
MediaStream ne doit être ajouté à la connexion par personne qu'après échange d'offre, Réponse ,les candidats doivent être faits. Si on appelle onAddStream (), cela signifie que vous recevez la vidéo distante.