2017-09-21 1 views
0

J'ai fait des recherches sur les méthodes pour concevoir une nouvelle application autour Guide « Screen Capture sur Chrome » de Twilio ici: https://www.twilio.com/docs/api/video/screen-capture-chromeEssayer de se connecter à Twilio salle vidéo avec partage d'écran

J'ai créé avec succès une extension Chrome, publié et a pu partager un écran et le connecter à une salle. Ce que j'espère que quelqu'un peut aider, c'est obtenir qu'un autre utilisateur se connecte et visionne la salle partagée (écran partagé).

J'ai partagé mon écran via le code suivant (snipped pour la longueur) et Verified via la console Twilio qu'il est en effet connecté:

const room = await connect(twToken, { 
    name: 'marty', 
    tracks: [] 
    }); 

    const stream = await getUserScreen(['screen'], chrmExID); 
    const screenLocalTrack = new LocalVideoTrack(stream.getVideoTracks()[0]); 

J'ai ensuite créé un site de test accessible par une seconde système pour se connecter à la pièce ci-dessus. J'ai essayé différentes méthodes, mais le deuxième utilisateur ne semble jamais voir la vidéo partagée dans la pièce. Par exemple:

const remoteDiv = document.getElementById('bodyScreen'); 
room.participants.forEach(participant => { 
participant.tracks.forEach(track => { 
      remoteDiv.appendChild(track.attach()); 
      }); 

Debugging via Chrome, je vois que le forEach tente d'énumérer sur un objet non défini.

J'ai aussi essayé quelques-unes des solutions ASP.NET C# Twilio a sur GitHub, mais je semblent avoir des problèmes d'incompatibilité entre les paquets et les Twilio NuGet Twilio-video.min.js j'utilise

Répondre

1

Twilio développeur évangéliste ici.

Je suis en train d'écrire une série de blog sur la construction d'une application comme celle-ci, mais ce n'est pas encore fait. Cependant, je pourrais peut-être aider un peu ici. Lorsque vous rejoignez une salle, ainsi que l'énumération immédiate des participants existants et de leurs pistes, vous devez également écouter chaque participant's trackAdded event. Les pistes peuvent ne pas se connecter dès qu'un participant est connecté, de sorte que l'écoute sur cet événement recevra toutes les pistes qui sont ajoutées après que le participant a rejoint la salle.

room.participants.forEach(participant => { 
    participant.on('trackAdded', track => { 
    remoteDiv.appendChild(track.attach()); 
    }); 
}); 

Comme je l'ai dit, je travaille encore et écrit mes expériences ici, donc gardez un oeil sur la Twilio blog quand la série est publiée. Faites-moi savoir si cela aide du tout.

+0

Merci pour ça, je l'ai découvert il y a quelques jours et je l'ai essayé, ça marche super! J'ai frappé un autre hic cependant, que j'ai énuméré ici qui devrait aider j'espère. Lorsque la vidéo Twilio se connecte à une pièce, elle énumère les périphériques disponibles sur le système. S'il n'en trouve aucune (ce qui serait un cas valide pour le récepteur d'un partage d'écran), il lance une erreur et s'arrête. J'ai demandé à l'autre utilisateur de partager également son écran avec la salle, ce qui a permis à la vidéo Twilio de se connecter avec succès, puis de joindre ma piste de partage d'écran. Lien vers la discussion sur GitHub ici: https://github.com/twilio/twilio-video.js/issues/137 – ma11achy

+0

Merci d'avoir signalé cela, il est intéressant de voir comment 'getUserMedia' se comporte dans cette situation. Peut-être que l'utilisation de ['navigator.mediaDevices.enumerateDevices'] (https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices) est une bonne chose à faire avant d'essayer de se connecter à la fois à la vidéo et audio sélectionné? – philnash

+0

Cheers, je vais essayer ça. Probablement le mieux pour attraper tous les problèmes à enumerateDevices avant d'envoyer quoi que ce soit d'autre dans le tuyau – ma11achy