Démarrage rapide : Définir des contraintes vidéo dans votre application appelante
Important
Les fonctionnalités décrites dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Vue d'ensemble
L’API Contraintes vidéo permet aux développeurs de contrôler la qualité vidéo à partir de leurs appels vidéo. Dans ce guide de démarrage rapide, nous expliquons comment utiliser l’API pour définir les contraintes.
Prérequis
Reportez-vous au Guide de démarrage rapide des appels vocaux pour configurer un exemple d’application avec les appels vocaux.
Classes
Nom | Description |
---|---|
VideoConstraints | Utilisé pour contenir à la fois les contraintes vidéo entrantes et les contraintes vidéo sortantes. |
OutgoingVideoConstraints | Permet de spécifier des contraintes (MaxWidth | MaxHeight | MaxFrameRate ) pour les flux vidéo sortants. |
IncomingVideoConstraints | Permet de spécifier des contraintes (MaxWidth | MaxHeight ) pour les flux vidéo entrants. |
Utilisation de contraintes vidéo
Les sections suivantes expliquent comment les contraintes vidéo peuvent être définies pour les flux vidéo entrants et/ou sortants à différents moments d’un appel.
Définir des contraintes vidéo avant de commencer un appel
Pour les flux vidéo entrants, un IncomingVideoConstraints
doit être ajouté à IncomingVideoOptions
.
var IncomingVideoOptions = new IncomingVideoOptions()
{
Constraints = new IncomingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/
},
// other options
// ...
}
Pour les flux vidéo sortants, un OutgoingVideoConstraints
doit être ajouté à OutgoingVideoOptions
.
var OutgoingVideoOptions = new OutgoingVideoOptions()
{
Constraints = new OutgoingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/,
MaxFrameRate = /*value*/
},
// other options
// ...
}
Étant donné que les options sont utilisées pour démarrer/joindre un appel, les contraintes peuvent ensuite être appliquées automatiquement aux flux. Par exemple :
var joinCallOptions = new JoinCallOptions()
{
IncomingVideoOptions = new IncomingVideoOptions()
{
Constraints = new IncomingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/
},
// other options
// ...
},
OutgoingVideoOptions = new OutgoingVideoOptions()
{
Constraints = new OutgoingVideoConstraints()
{
MaxWidth = /*value*/,
MaxHeight = /*value*/,
MaxFrameRate = /*value*/
},
// other options
// ...
}
};
await callAgent.JoinAsync(locator, joinCallOptions);
Définir des contraintes vidéo pendant un appel
Au lieu de définir les contraintes vidéo avant de commencer un appel, vous pouvez également ajuster dynamiquement les contraintes vidéo pendant un appel. Vous devez appeler SetVideoConstraints
sur votre classe de type Call
et fournir les contraintes.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
{
outgoingVideoConstraints.MaxWidth = /*value*/ ;
outgoingVideoConstraints.MaxHeight = /*value*/ ;
outgoingVideoConstraints.MaxFrameRate = /*value*/ ;
};
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints()
{
incomingVideoConstraints.MaxWidth = /*value*/ ;
incomingVideoConstraints.MaxHeight = /*value*/ ;
};
VideoConstraints constraints = new VideoConstraints();
constraints.OutgoingVideoConstraints = outgoingVideoConstraints;
constraints.IncomingVideoConstraints = incomingVideoConstraints;
call.SetVideoConstraints(constraints);
Pour réinitialiser/supprimer les contraintes vidéo que vous avez définies précédemment, vous devez suivre le modèle ci-dessus et fournir 0
comme valeur de contrainte. Le fait de fournir des valeurs null
pour IncomingVideoConstraints
ou OutgoingVideoConstraints
ne réinitialise pas/supprime les contraintes et les contraintes avec une valeur null
sont ignorées.
Limites
Notes
Assurez-vous que vous connaissez ces limitations lors de l’utilisation de l’API Contraintes vidéo. Certaines des limitations seront supprimées dans les versions ultérieures.
Il existe certaines limitations connues de l’API Contraintes vidéo actuelle.
La contrainte est une contrainte maximale, ce qui signifie que la valeur de contrainte possible peut être la valeur spécifiée ou inférieure. Il n’existe aucune garantie que la valeur réelle reste identique à celle spécifiée par l’utilisateur.
Lorsque l’utilisateur définit une valeur de contrainte trop petite, le SDK utilise la plus petite valeur disponible prise en charge.
Pour la configuration
OutgoingVideoConstraints
pendant un appel, le flux vidéo en cours ne récupère pas automatiquement les contraintes spécifiées. Pour que les contraintes prennent effet, vous devez arrêter et redémarrer la vidéo sortante.IncomingVideoConstraints
est actuellement une contrainte préférée par l’utilisateur au lieu d’une contrainte dure, ce qui signifie que, en fonction de votre réseau et de votre matériel, la valeur réelle reçue peut toujours dépasser le jeu de contraintes.
Statistiques des médias
Pour évaluer et comparer la qualité vidéo après avoir appliqué les contraintes vidéo, vous pouvez accéder à l’API MediaStats pour obtenir des informations de résolution et de débit vidéo du flux. Les statistiques des médias incluent également d’autres statistiques granulaires liées aux flux, telles que la gigue, la perte de paquets, le temps d’aller-retour, etc.
Important
Les fonctionnalités décrites dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Vue d'ensemble
L’API Contraintes vidéo permet aux développeurs de contrôler la qualité vidéo à partir de leurs appels vidéo. Dans ce guide de démarrage rapide, nous expliquons comment utiliser l’API pour définir les contraintes.
Prérequis
Reportez-vous au Guide de démarrage rapide des appels vocaux pour configurer un exemple d’application avec les appels vocaux.
Classes
Nom | Description |
---|---|
VideoConstraints | Utilisé pour contenir à la fois les contraintes vidéo entrantes et les contraintes vidéo sortantes. |
OutgoingVideoConstraints | Permet de spécifier des contraintes (maxWidth | maxHeight | maxFrameRate ) pour les flux vidéo sortants. |
IncomingVideoConstraints | Permet de spécifier des contraintes (maxWidth | maxHeight ) pour les flux vidéo entrants. |
Utilisation de contraintes vidéo
Les sections suivantes expliquent comment les contraintes vidéo peuvent être définies pour les flux vidéo entrants et/ou sortants à différents moments d’un appel.
Définir des contraintes vidéo avant de commencer un appel
Pour les flux vidéo entrants, un IncomingVideoConstraints
doit être ajouté à IncomingVideoOptions
.
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
incomingVideoConstraints.setMaxWidth(/*value*/);
incomingVideoConstraints.setMaxHeight(/*value*/);
// ...
IncomingVideoOptions incomingVideoOptions = new IncomingVideoOptions();
incomingVideoOptions.setConstraints(incomingVideoConstraints);
Pour les flux vidéo sortants, un OutgoingVideoConstraints
doit être ajouté à OutgoingVideoOptions
.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints()
outgoingVideoConstraints.setMaxWidth(/*value*/);
outgoingVideoConstraints.setMaxHeight(/*value*/);
outgoingVideoConstraints.setMaxFrameRate(/*value*/);
// ...
OutgoingVideoOptions outgoingVideoOptions = new OutgoingVideoOptions();
outgoingVideoOptions.setConstraints(outgoingVideoConstraints);
Étant donné que les options sont utilisées pour démarrer/joindre un appel, les contraintes peuvent ensuite être appliquées automatiquement aux flux. Par exemple :
JoinCallOptions joinCallOptions = new JoinCallOptions();
joinCallOptions.setIncomingVideoOptions(incomingVideoOptions);
joinCallOptions.setOutgoingVideoOptions(outgoingVideoOptions);
callAgent.Join(context, locator, joinCallOptions);
Définir des contraintes vidéo pendant un appel
Au lieu de définir les contraintes vidéo avant de commencer un appel, vous pouvez également ajuster dynamiquement les contraintes vidéo pendant un appel. Vous devez appeler setVideoConstraints
sur votre classe de type Call
et fournir les contraintes.
OutgoingVideoConstraints outgoingVideoConstraints = new OutgoingVideoConstraints();
outgoingVideoConstraints.setMaxWidth(/*value*/);
outgoingVideoConstraints.setMaxHeight(/*value*/);
outgoingVideoConstraints.setMaxFrameRate(/*value*/);
IncomingVideoConstraints incomingVideoConstraints = new IncomingVideoConstraints();
incomingVideoConstraints.setMaxWidth(/*value*/);
incomingVideoConstraints.setMaxHeight(/*value*/);
VideoConstraints constraints = new VideoConstraints();
constraints.setOutgoingVideoConstraints(outgoingVideoConstraints);
constraints.setIncomingVideoConstraints(incomingVideoConstraints);
call.setVideoConstraints(constraints);
Pour réinitialiser/supprimer les contraintes vidéo que vous avez définies précédemment, vous devez suivre le modèle ci-dessus et fournir 0
comme valeur de contrainte. Le fait de fournir des valeurs null
pour IncomingVideoConstraints
ou OutgoingVideoConstraints
ne réinitialise pas/supprime les contraintes et les contraintes avec une valeur null
sont ignorées.
Limites
Notes
Assurez-vous que vous connaissez ces limitations lors de l’utilisation de l’API Contraintes vidéo. Certaines des limitations seront supprimées dans les versions ultérieures.
Il existe certaines limitations connues de l’API Contraintes vidéo actuelle.
La contrainte est une contrainte maximale, ce qui signifie que la valeur de contrainte possible peut être la valeur spécifiée ou inférieure. Il n’existe aucune garantie que la valeur réelle reste identique à celle spécifiée par l’utilisateur.
Lorsque l’utilisateur définit une valeur de contrainte trop petite, le SDK utilise la plus petite valeur disponible prise en charge.
Pour la configuration
OutgoingVideoConstraints
pendant un appel, le flux vidéo en cours ne récupère pas automatiquement les contraintes spécifiées. Pour que les contraintes prennent effet, vous devez arrêter et redémarrer la vidéo sortante.IncomingVideoConstraints
est actuellement une contrainte préférée par l’utilisateur au lieu d’une contrainte dure, ce qui signifie que, en fonction de votre réseau et de votre matériel, la valeur réelle reçue peut toujours dépasser le jeu de contraintes.
Statistiques des médias
Pour évaluer et comparer la qualité vidéo après avoir appliqué les contraintes vidéo, vous pouvez accéder à l’API MediaStats pour obtenir des informations de résolution et de débit vidéo du flux. Les statistiques des médias incluent également d’autres statistiques granulaires liées aux flux, telles que la gigue, la perte de paquets, le temps d’aller-retour, etc.
Important
Les fonctionnalités décrites dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Vue d'ensemble
L’API Contraintes vidéo permet aux développeurs de contrôler la qualité vidéo à partir de leurs appels vidéo. Dans ce guide de démarrage rapide, nous expliquons comment utiliser l’API pour définir les contraintes.
Prérequis
Reportez-vous au Guide de démarrage rapide des appels vocaux pour configurer un exemple d’application avec les appels vocaux.
Classes
Nom | Description |
---|---|
VideoConstraints | Utilisé pour contenir à la fois les contraintes vidéo entrantes et les contraintes vidéo sortantes. |
OutgoingVideoConstraints | Permet de spécifier des contraintes (maxWidth | maxHeight | maxFrameRate ) pour les flux vidéo sortants. |
IncomingVideoConstraints | Permet de spécifier des contraintes (maxWidth | maxHeight ) pour les flux vidéo entrants. |
Utilisation de contraintes vidéo
Les sections suivantes expliquent comment les contraintes vidéo peuvent être définies pour les flux vidéo entrants et/ou sortants à différents moments d’un appel.
Définir des contraintes vidéo avant de commencer un appel
Pour les flux vidéo entrants, un IncomingVideoConstraints
doit être ajouté à IncomingVideoOptions
.
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
// ...
let incomingVideoOptions = IncomingVideoOptions()
incomingVideoOptions.constraints = incomingVideoConstraints
Pour les flux vidéo sortants, un OutgoingVideoConstraints
doit être ajouté à OutgoingVideoOptions
.
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
// ...
let outgoingVideoOptions = OutgoingVideoOptions()
outgoingVideoOptions.constraints = outgoingVideoConstraints
Étant donné que les options sont utilisées pour démarrer/joindre un appel, les contraintes peuvent ensuite être appliquées automatiquement aux flux. Par exemple :
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
let incomingVideoOptions = IncomingVideoOptions()
incomingVideoOptions.constraints = incomingVideoConstraints
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
let outgoingVideoOptions = OutgoingVideoOptions()
outgoingVideoOptions.constraints = outgoingVideoConstraints
let joinCallOptions = new JoinCallOptions()
joinCallOptions.incomingVideoOptions = incomingVideoOptions
joinCallOptions.outgoingVideoOptions = outgoingVideoOptions
callAgent.join(with: locator, joinCallOptions: joinCallOptions);
Définir des contraintes vidéo pendant un appel
Au lieu de définir les contraintes vidéo avant de commencer un appel, vous pouvez également ajuster dynamiquement les contraintes vidéo pendant un appel. Vous devez appeler set(videoConstraints)
sur votre classe de type Call
et fournir les contraintes.
let outgoingVideoConstraints = OutgoingVideoConstraints()
outgoingVideoConstraints.maxWidth = /*value*/
outgoingVideoConstraints.maxHeight = /*value*/
outgoingVideoConstraint.maxFrameRate = /*value*/
let incomingVideoConstraints = IncomingVideoConstraints()
incomingVideoConstraints.maxWidth = /*value*/
incomingVideoConstraints.maxHeight = /*value*/
let videoConstraints = VideoConstraints()
videoConstraints.outgoingVideoConstraints = outgoingVideoConstraints
videoConstraints.incomingVideoConstraints = incomingVideoConstraints
call?.set(videoConstraints: videoConstraints)
Pour réinitialiser/supprimer les contraintes vidéo que vous avez définies précédemment, vous devez suivre le modèle ci-dessus et fournir 0
comme valeur de contrainte. Le fait de fournir des valeurs null
pour IncomingVideoConstraints
ou OutgoingVideoConstraints
ne réinitialise pas/supprime les contraintes et les contraintes avec une valeur null
sont ignorées.
Limites
Notes
Assurez-vous que vous connaissez ces limitations lors de l’utilisation de l’API Contraintes vidéo. Certaines des limitations seront supprimées dans les versions ultérieures.
Il existe certaines limitations connues de l’API Contraintes vidéo actuelle.
La contrainte est une contrainte maximale, ce qui signifie que la valeur de contrainte possible peut être la valeur spécifiée ou inférieure. Il n’existe aucune garantie que la valeur réelle reste identique à celle spécifiée par l’utilisateur.
Lorsque l’utilisateur définit une valeur de contrainte trop petite, le SDK utilise la plus petite valeur disponible prise en charge.
Pour la configuration
OutgoingVideoConstraints
pendant un appel, le flux vidéo en cours ne récupère pas automatiquement les contraintes spécifiées. Pour que les contraintes prennent effet, vous devez arrêter et redémarrer la vidéo sortante.IncomingVideoConstraints
est actuellement une contrainte préférée par l’utilisateur au lieu d’une contrainte dure, ce qui signifie que, en fonction de votre réseau et de votre matériel, la valeur réelle reçue peut toujours dépasser le jeu de contraintes.
Statistiques des médias
Pour évaluer et comparer la qualité vidéo après avoir appliqué les contraintes vidéo, vous pouvez accéder à l’API MediaStats pour obtenir des informations de résolution et de débit vidéo du flux. Les statistiques des médias incluent également d’autres statistiques granulaires liées aux flux, telles que la gigue, la perte de paquets, le temps d’aller-retour, etc.
Vous pouvez définir des contraintes vidéo dans vos appels pour contrôler la qualité vidéo en fonction de la résolution, du nombre d’images par seconde ou du débit de vos appels vidéo. Dans ce guide de démarrage rapide, nous expliquons comment définir des contraintes vidéo au début d’un appel et comment utiliser notre méthode setConstraints
sur l’objet de l’appel pour définir des contraintes vidéo dynamiquement pendant l’appel.
Envoyer des contraintes vidéo
Le kit de développement logiciel (SDK) d’appel web Azure Communication Services prend en charge la définition de la résolution, de la fréquence d’images ou de la vitesse de transmission maximales d’une vidéo envoyée par un client. Les contraintes vidéo de l’expéditeur sont prises en charge sur les navigateurs de bureau (Chrome, Edge, Firefox) et lors de l’utilisation des navigateurs mobiles iOS Safari ou Android Chrome.
Contraintes prises en charge |
---|
Vidéo entrante : résolution Vidéo sortante : résolution, fréquence d’images, vitesse de transmission |
Définition de contraintes vidéo au début d’un appel : vidéo sortante (envoi)
Le paramètre de contraintes vidéo est implémenté sur l’interface Call
. Pour utiliser les contraintes vidéo, vous pouvez spécifier les contraintes à partir de CallOptions
lorsque vous effectuez un appel, acceptez un appel ou rejoignez un appel. Vous devez spécifier localVideoStreams
dans videoOptions
.
Notez que les contraintes ne fonctionnent pas si vous rejoignez un appel avec l’option audio uniquement et activez l’appareil photo ultérieurement. Dans ce cas, vous pouvez définir des contraintes vidéo dynamiquement à l’aide de la méthode setConstraints
sur l’interface Call
.
const callOptions = {
videoOptions: {
localVideoStreams: [...],
constraints: {
send: {
bitrate: {
max: 575000
},
frameHeight: {
max: 240
},
frameRate: {
max: 20
}
}
}
},
audioOptions: {
muted: false
}
};
// make a call
this.callAgent.startCall(identitiesToCall, callOptions);
// join a group call
this.callAgent.join({ groupId }, callOptions);
// accept an incoming call
this.incomingCall.accept(callOptions)
Les types de contraintes vidéo sont décrits comme suit :
export declare interface VideoOptions {
localVideoStreams?: LocalVideoStream[];
//video constraint when call starts
constraints?: VideoConstraints;
};
export declare type VideoConstraints = {
send?: VideoSendConstraints;
};
export type VideoSendConstraints = {
/**
* Resolution constraint
*/
frameHeight?: MediaConstraintRange;
/**
* FrameRate constraint
*/
frameRate?: MediaConstraintRange;
/**
* Bitrate constraint
*/
bitrate?: MediaConstraintRange;
};
export declare type MediaConstraintRange = {
max?: number;
};
Lors de la définition de contraintes vidéo, le kit de développement logiciel (SDK) choisit la valeur la plus proche qui se trouve dans le jeu de contraintes pour empêcher les valeurs de résolution, de fréquence d’images ou de vitesse de transmission de dépasser les valeurs des contraintes maximales définies. En outre, lorsque la valeur de la contrainte de résolution est trop petite, le kit de développement logiciel (SDK) choisit la plus petite résolution disponible. Dans ce cas, la hauteur de la résolution choisie peut être supérieure à la valeur de contrainte.
Remarque
Pour tous les bitrate
, frameHeight
et frameRate
, la valeur de contrainte est une contrainte max
, ce qui signifie que la valeur réelle dans l’appel peut être la valeur spécifiée ou une valeur plus petite.
Il n'y a aucune garantie que la résolution vidéo envoyée reste à la résolution spécifiée.
frameHeight
dans VideoSendConstraints
a une signification différente lorsqu’un appareil mobile est en mode portrait. En mode portrait, cette valeur indique le côté le plus court de l’appareil. Par exemple, si vous spécifiez frameHeight.max
une valeur avec 240 sur un appareil 1080(W) x 1920(H) en mode portrait, la hauteur de la contrainte se trouve du côté 1080(W). Lorsque le même appareil est en mode paysage (1920(W) x 1080(H)), la contrainte se trouve du côté 1080(H).
Si vous utilisez l’API MediaStats pour suivre la résolution vidéo envoyée, vous pouvez constater que la résolution envoyée peut changer pendant l’appel. Elle peut monter ou descendre, mais doit être égale ou inférieure à la valeur de contrainte que vous fournissez. Ce changement de résolution est un comportement attendu. Le navigateur a également une règle de dégradation pour ajuster la résolution envoyée en fonction des conditions du processeur ou du réseau.
Définition de contraintes vidéo pendant un appel : vidéo sortante (envoi)
Vous pouvez définir des contraintes vidéo pendant l’appel en utilisant la méthode setConstraints
sur l’objet Call
.
// For eg, when you've started a call,
const currentCall = this.callAgent.startCall(identitiesToCall, callOptions);
// To set constraints during the call,
await currentCall.setConstraints({
video: {
send: {
frameHeight: {
max: 360
},
frameRate: {
max: 15
}
}
}
});
// To set only a particular constraint (the others will stay as what they were set before, if they were set)
await currentCall.setConstraints({
video: {
send: {
bitrate: {
max: 400000
}
}
}
});
// To unset any constraint,
await currentCall.setConstraints({
video: {
send: {
frameHeight: {
max: 0
}
}
}
});
Remarque
Le fait de définir la valeur de la contrainte sur 0
annule toutes les contraintes précédemment définies. Vous pouvez adopter cette technique pour réinitialiser ou supprimer des contraintes.
Recevoir des contraintes vidéo
La gestion de la qualité vidéo pour les flux entrants implique de comprendre l’échelle de résolution Azure Communication Services, qui est une liste prédéfinie de résolutions vidéo avec des limites de débit supérieure et inférieure estimées. Lorsqu’un client demande une résolution spécifique, le serveur WebJS et le serveur principal consulte l’échelle de résolution pour allouer la vitesse de transmission vidéo appropriée, compte tenu des conditions réseau et des fonctionnalités d’appareil.
La définition de la taille de rendu vidéo est une étape cruciale pour les développeurs visant à contrôler la vitesse de transmission et la fréquence d’images d’un flux vidéo entrant. La qualité initiale et la résolution d’un flux vidéo sont déterminées par la taille du convertisseur créé et placé sur une page web. Par exemple, si le renderer est petit, le Kit de développement logiciel (SDK) WebJS demande une résolution plus petite. À l’inverse, si le renderer est volumineux, le SDK ACS vise la meilleure résolution possible du serveur. Ce processus garantit que la qualité de la vidéo est optimisée en fonction des exigences et des fonctionnalités du client. Lorsqu’un client demande une résolution spécifique, le serveur consulte l’échelle de résolution pour allouer la vitesse de transmission vidéo appropriée, compte tenu des conditions réseau et des fonctionnalités d’appareil.
La table d’échelles de résolution fournit ce que l’échelle de résolution du Kit de développement logiciel (SDK) d’appel WebJS comprend les débits binaires des vidéos entrantes estimés pour différentes résolutions. Ces détails aident les développeurs à comprendre la relation entre la résolution, le débit binaire et la fréquence d’images et la quantité approximative de bande passante utilisée par un flux de vidéo entrante spécifique. Par exemple, une résolution de 1280x720 flux à 30 FPS avec le client à l’aide d’un débit minimal approximatif de 1 MBIT/s et d’une vitesse de transmission maximale approximative de 2,5 Mbits/s.
Le Kit de développement logiciel (SDK) d’appel WebJS Azure Communication Services ajuste la taille de la vidéo en fonction de la bande passante disponible pour garantir une expérience de communication cohérente. Le Kit de développement logiciel (SDK) WebJS Calling ajuste la taille de la vidéo en fonction des algorithmes qui surveillent les conditions réseau. Lorsque la bande passante réseau est suffisante, le SDK augmente la résolution vidéo à son niveau maximal en fonction de la taille de rendu définie sur la page web. À l’inverse, lorsque la bande passante est limitée, elle réduit la résolution vidéo pour empêcher la mise en mémoire tampon et maintenir une connexion stable.
Le tableau suivant fournit l’échelle de résolution et les débits de transmission estimés pour chaque résolution et FPS associé qui seront remis à cette résolution.
Hauteur | Largeur | FPS | Débit minimal (Mbits/s) | Débit maximal (Mbits/s) |
---|---|---|---|---|
1080 | 1920 | 30 | 1,75 | 10 |
720 | 1 280 | 30 | 1 | 2.5 |
540 | 960 | 30 | 0,5 | 1,125 |
360 | 640 | 30 | 0.4 | 0,57 |
240 | 426 | 15 | 0,125 | 0,5 |
240 | 320 | 15 | 0.2 | 0.175 |
Utilisation de statiques médias pour comprendre l’impact des contraintes vidéo
Pour évaluer et comparer la qualité vidéo après avoir appliqué les contraintes vidéo, vous pouvez accéder à l’API MediaStats pour obtenir des informations de résolution et de débit vidéo du flux d’envoi. Les statistiques des médias incluent également d’autres statistiques granulaires liées aux flux, telles que la gigue, la perte de paquets, le temps d’aller-retour, etc.
const mediaStatsFeature = call.feature(Features.MediaStats);
const mediaStatsCollector = mediaStatsFeature.createCollector();
mediaStatsCollector.on('sampleReported', (sample: SDK.MediaStatsReportSample) => {
// process the stats for the call.
console.log(sample);
});
Étapes suivantes
Pour plus d’informations, consultez les articles suivants :
- En savoir plus sur le document de concept contraintes vidéo
- En savoir plus sur les fonctionnalités du kit de développement logiciel (SDK) d’appel