Partage d'écran : Concepts généraux
Vous pouvez publier un flux qui utilise une vue vidéo de votre écran (au lieu d'une caméra) comme source.
Un client connecté à la session peut s'abonner au flux (et le visualiser) comme il s'abonnerait à un flux utilisant une caméra comme source.
Publication d'un flux avec une source de partage d'écran
Pour publier un flux de partage d'écran, définissez la propriété videoSource de la propriété OTPublisher sur "screen" :
<OTPublisher
properties={{
videoSource: 'screen',
}}
/>
Le flux de partage d'écran capturera la vidéo de l'ensemble de la vue de l'application. Pour cette raison, vous pouvez désactiver les abonnés dans le client local lors de la publication d'un flux de partage d'écran (pour éviter qu'ils n'apparaissent dans le flux publié).
Les videoSource du paramètre options de la méthode OT.initPublisher() définit la source vidéo du flux à publier. Pour le partage d'écran, définissez cette propriété à "screen". Dans les versions plus anciennes des navigateurs, vous pouviez également passer en "application" ou "window" pour spécifier un type de source de partage d'écran. Cependant, dans les navigateurs actuels qui prennent en charge le partage d'écran, l'introduction de l'une ou l'autre de ces valeurs entraîne le même comportement : le navigateur affiche une boîte de dialogue dans laquelle l'utilisateur final sélectionne la source de partage d'écran (qui peut être l'ensemble de l'écran ou une fenêtre spécifique). Dans Electron, le partage d'écran capture la totalité de l'écran, sans demander la permission à l'utilisateur.
Le code suivant montre comment publier un flux qui utilise le partage d'écran comme source :
<div id="publisher"></div>
<div id="screen-preview"></div>
<script>
OT.checkScreenSharingCapability(function(response) {
if(!response.supported || response.extensionRegistered === false) {
// This browser does not support screen sharing.
} else if (response.extensionInstalled === false) {
// Prompt to install the extension.
} else {
// Screen sharing is available. Publish the screen.
var publisher = OT.initPublisher('screen-preview',
{videoSource: 'screen'},
function(error) {
if (error) {
// Look at error.message to see what went wrong.
} else {
session.publish(publisher, function(error) {
if (error) {
// Look error.message to see what went wrong.
}
});
}
}
);
}
});
</script>
En cas d'erreur, le gestionnaire d'achèvement du OT.initPublisher() peut recevoir un objet d'erreur avec l'un des codes d'erreur suivants :
- 1550 - "Le partage d'écran n'est pas pris en charge".
- 1551 - "Le partage d'écran nécessite une type mais il n'y a pas d'extension enregistrée pour type."
- 1552 - "Le partage d'écran nécessite une type mais elle n'est pas installée".
Lorsque vous publiez un flux de partage d'écran, les valeurs par défaut suivantes sont définies pour le paramètre options du paramètre OT.initPublisher() méthode :
maxResolution-{ width: 1920, height: 1920 }mirror-falsefitMode-"contain"publishAudio-false
En outre, les abonnés au flux résultant utilisent également par défaut la fonction "contain" fitMode de la mise en place.
Pour plus d'informations sur maxResolution et fitModevoir les deux sections suivantes.
Par défaut, vidéo évolutive est désactivée pour les flux de partage d'écran. Vous pouvez activer la vidéo évolutive pour les flux de partage d'écran en définissant le paramètre scalableScreenshare pour l'option OT.initPublisher() méthode. Remarque : vidéo évolutive pour les flux de partage d'écran est une bêta caractéristiques.
Pour utiliser l'écran de l'appareil, au lieu d'une caméra, comme source vidéo, utilisez la classe PublisherKit pour utiliser un capteur vidéo personnalisé. Pour un exemple de code, voir l'activité de partage d'écran dans le répertoire samples du SDK.
Appeler le setPublisherVideoType(PublisherKit.PublisherKitVideoType type) de l'objet Publisher et transmet PublisherKit.PublisherKitVideoTypePublisherKitVideoTypeScreen. Cette option signale le flux publié comme ayant une source vidéo de partage d'écran (au lieu d'une caméra).
Avant de publier un flux de partage d'écran qui utilise le type de vidéo sur écran dans une session acheminée, vous devez appeler la fonction setAudioFallbackEnabled(boolean enabled) pour l'objet PublisherKit et passer la méthode false. Cette option désactive la fonction de repli audio uniquement, de sorte que la vidéo ne soit pas interrompue par les abonnés. Voir Le routeur vidéo multimédia de Vonage et les modes médias.
Par défaut, vidéo évolutive est désactivée pour les flux de partage d'écran. Vous pouvez activer la vidéo évolutive pour les flux de partage d'écran à l'aide de l'option PublisherKit.Builder.scalableScreenshare() méthode.
Pour utiliser l'écran de l'appareil, au lieu d'une caméra, comme source vidéo, utilisez la classe PublisherKit pour utiliser un capteur vidéo personnalisé. Pour un exemple de code, voir le projet Screen-Sharing dans le répertoire samples du SDK.
Régler le OTPublisherKit.videoType à la propriété OTPublisherKitVideoTypeScreen (défini dans OTPublisherKitVideoType). Cela indique que le flux publié a une source vidéo de partage d'écran (au lieu d'une caméra).
Avant de publier un flux de partage d'écran qui utilise le type de vidéo d'écran dans une session qui utilise Vonage Video Media Server, vous devez définir le paramètre OTPublisherKit.audioFallbackEnabled à NO (false en swift). Cela désactive la fonction de repli audio uniquement, de sorte que la vidéo ne soit pas interrompue par les abonnés. Voir Le routeur vidéo multimédia de Vonage et les modes médias.
Par défaut, vidéo évolutive est désactivée pour les flux de partage d'écran. Vous pouvez activer la vidéo évolutive pour les flux de partage d'écran à l'aide de l'option OTPublisherKitSettings.scalableScreenshare propriété. Remarque : vidéo évolutive pour les flux de partage d'écran est une bêta caractéristiques.
Pour utiliser l'écran de l'appareil, au lieu d'une caméra, comme source vidéo, utilisez la classe PublisherKit pour utiliser un capteur vidéo personnalisé. Pour un exemple de code, voir le projet Screen-Sharing dans le répertoire samples du SDK.
Régler le OTPublisherKit.videoType à la propriété OTPublisherKitVideoTypeScreen (défini dans OTPublisherKitVideoType). Cela indique que le flux publié a une source vidéo de partage d'écran (au lieu d'une caméra).
Avant de publier un flux de partage d'écran qui utilise le type de vidéo d'écran dans une session qui utilise Vonage Video Media Server, vous devez définir le paramètre OTPublisherKit.audioFallbackEnabled à NO (false en swift). Cela désactive la fonction de repli audio uniquement, de sorte que la vidéo ne soit pas interrompue par les abonnés. Voir Le routeur vidéo multimédia de Vonage et les modes médias.
Par défaut, vidéo évolutive est désactivée pour les flux de partage d'écran. Vous pouvez activer la vidéo évolutive pour les flux de partage d'écran à l'aide de l'option OTPublisherKitSettings.scalableScreenshare propriété. Remarque : vidéo évolutive pour les flux de partage d'écran est une bêta caractéristiques.
Pour utiliser l'écran de l'appareil, au lieu d'une caméra, comme source vidéo, vous devez implémenter une fonction capteur vidéo personnalisé.
Voici un exemple qui définit un capteur vidéo personnalisé pour mettre en œuvre le partage d'écran (en utilisant l'écran au lieu d'une caméra comme source vidéo) :
Régler le VideoSourceType de l'objet Publisher à OpenTok.VideoSourceType.Screen. Cette option signale le flux publié comme ayant une source vidéo de partage d'écran (au lieu d'une caméra).
Par défaut, vidéo évolutive est désactivée pour les flux de partage d'écran. Vous pouvez activer la vidéo évolutive pour les flux de partage d'écran à l'aide de l'option Publisher.Builder.ScalableScreenshare propriété.
Remarque : vidéo évolutive pour les flux de partage d'écran est une bêta caractéristiques.
Détermination du type de vidéo ("écran" ou "caméra") pour un flux
Vous pouvez vous abonner à un flux utilisant une source vidéo de partage d'écran de la même manière que vous vous abonnez à un flux utilisant une caméra comme source. Voir S'abonner à des flux.
Vous pouvez détecter qu'un flux est un flux de partage d'écran en vérifiant le paramètre videoType de l'objet événement dans l'OTSession streamCreated événement. Pour un flux de partage d'écran, cette propriété est définie sur "screen":
<OTSession
applicationId="the API key"
sessionId="the session ID"
token="the token"
eventHandlers={{
streamCreated: event => {
console.log(event.videoType, 'stream created', event.streamId);
}
}}>
{ /* ... */ }
</OTSession>
L'objet OTSession envoie un événement streamPropertyChanged lorsque les dimensions du flux d'un autre client changent. Cela peut se produire lorsque le client publiant redimensionne une fenêtre partagée (telle qu'une fenêtre de navigateur dans une application utilisant le SDK du client Web de Vonage Video). La propriété changedProperty de l'objet de l'événement est définie sur " videoDimensions ". Les propriétés stream.height et stream.width de l'objet event sont les nouvelles largeur et hauteur de la vidéo.
<OTSession
applicationId="the API key"
sessionId="the session ID"
token="the token"
eventHandlers={{
streamPropertyChanged: event => {
console.log(event.stream.streamId, 'stream property', event.changedProperty, 'changed:', event.stream.height, event.stream.width);
}
}}>
{ /* ... */ }
</OTSession>
Vous pouvez utiliser les dimensions de la vidéo et les détails du type de vidéo pour les flux afin d'ajuster la taille ou les dimensions de leurs abonnés correspondants dans l'interface utilisateur. Pour plus d'informations sur la personnalisation de la présentation des abonnés dans l'interface utilisateur, voir S'abonner à des flux.
L'objet Stream contient un videoType propriété. Elle peut prendre l'une des valeurs suivantes
"camera"- un flux vidéo standard qui utilise une caméra comme source vidéo"screen"- un flux vidéo de partage d'écran"custom"- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéoundefined- un flux est uniquement vocal (voir le Guide vocal)
Cette propriété peut changer si un flux publié à partir d'un appareil mobile passe d'un type de vidéo de type caméra à un type de vidéo de type partage d'écran. Lorsque le type de vidéo change, l'objet Session envoie un message streamPropertyChanged événement.
Le code suivant s'abonne aux flux et les ajoute à différents éléments HTML DIV, en fonction du type de vidéo :
<div id="people"></div>
<div id="screens"></div>
<script>
session.on('streamCreated', function(event) {
var subOptions = {insertMode: 'append'};
if(event.stream.videoType === 'screen') {
session.subscribe(event.stream, 'screens', subOptions);
} else {
session.subscribe(event.stream, 'people', subOptions);
}
});
</script>
L'objet Stream contient un videoType . Elle peut prendre l'une des valeurs suivantes Elle peut prendre l'une des valeurs suivantes, définies dans l'énumération Stream.StreamVideoType :
StreamVideoTypeCamera- un flux vidéo standard qui utilise une caméra comme source vidéoStreamVideoTypeScreen- un flux vidéo de partage d'écranStreamVideoTypeCustom- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéo.
L'objet Stream contient un videoType . Elle peut prendre l'une des valeurs suivantes, définies dans l'énumération OTStreamVideoType :
OTStreamVideoTypeCamera- un flux vidéo standard qui utilise une caméra comme source vidéoOTStreamVideoTypeScreen- un flux vidéo de partage d'écranOTStreamVideoTypeCustom- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéo
L'objet Stream contient un videoType . Elle peut prendre l'une des valeurs suivantes, définies dans l'énumération OTStreamVideoType :
OTStreamVideoTypeCamera- un flux vidéo standard qui utilise une caméra comme source vidéoOTStreamVideoTypeScreen- un flux vidéo de partage d'écranOTStreamVideoTypeCustom- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéo
L'objet Stream contient un VideoSourceType (propriété). Elle peut prendre l'une des valeurs suivantes, définies dans la propriété OpenTok.VideoSourceType enum :
Camera- un flux vidéo standard qui utilise une caméra comme source vidéoScreen- un flux vidéo de partage d'écranCustom- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéo.
S'abonner à des flux de partage d'écran
L'objet Stream contient un videoType propriété. Elle peut prendre l'une des valeurs suivantes
"camera"- un flux vidéo standard qui utilise une caméra comme source vidéo"screen"- un flux vidéo de partage d'écran"custom"- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéoundefined- un flux est uniquement vocal (voir le Guide vocal)
Cette propriété peut changer si un flux publié à partir d'un appareil mobile passe d'un type de vidéo de type caméra à un type de vidéo de type partage d'écran. Lorsque le type de vidéo change, l'objet Session envoie un message streamPropertyChanged événement.
Le code suivant s'abonne aux flux et les ajoute à différents éléments HTML DIV, en fonction du type de vidéo :
<div id="people"></div>
<div id="screens"></div>
<script>
session.on('streamCreated', function(event) {
var subOptions = {insertMode: 'append'};
if(event.stream.videoType === 'screen') {
session.subscribe(event.stream, 'screens', subOptions);
} else {
session.subscribe(event.stream, 'people', subOptions);
}
});
</script>
Vous pouvez vous abonner à un flux utilisant une source vidéo de partage d'écran de la même manière que vous vous abonnez à un flux utilisant une caméra comme source. Voir S'abonner à des flux.
Vous pouvez vous abonner à un flux utilisant une source vidéo de partage d'écran de la même manière que vous vous abonnez à un flux utilisant une caméra comme source. Voir S'abonner à des flux dans Swift.
Vous pouvez vous abonner à un flux utilisant une source vidéo de partage d'écran de la même manière que vous vous abonnez à un flux utilisant une caméra comme source. Voir S'abonner à des flux dans Objectif-C.
Vous pouvez vous abonner à un flux utilisant une source vidéo de partage d'écran de la même manière que vous vous abonnez à un flux utilisant une caméra comme source. Voir S'abonner à des flux.