Régler le débit maximal d'un flux
Vous pouvez contrôler dynamiquement le débit maximum qu'un éditeur peut utiliser pour les flux vidéo de la caméra.
Ce guide montre comment configurer les paramètres de débit vidéo, comment interagir avec les différents préréglages, comment définir les débits bruts et les meilleures pratiques pour utiliser efficacement l'API.
Cette rubrique comprend les sections suivantes :
Vue d'ensemble
Vous pouvez définir dynamiquement le débit maximum qu'un éditeur peut utiliser lors de l'encodage d'un média. L'encodeur vidéo ajuste alors le débit de manière dynamique, en utilisant une valeur comprise dans la plage autorisée, d'un seuil minimum au débit maximum défini, en fonction des conditions du réseau et d'autres contraintes.
La définition du débit maximal peut contribuer à réduire la consommation de bande passante lorsqu'un utilisateur se connecte à partir d'une connexion payante. Veillez à lire le Limites ci-dessous.
Limites
Il faut tenir compte de certaines limites importantes :
Conditions du réseau - Le débit réel obtenu sur le réseau peut être inférieur à la valeur fixée, en raison des estimations en temps réel du réseau, des fluctuations de la bande passante et des limitations du backend.
Valeurs hors limites - Si vous fournissez une valeur de débit en dehors de la plage valide, le SDK peut ignorer la demande ou renvoyer une erreur.
Utilisation de l'API
Préréglages du débit binaire vidéo
L'API propose des préréglages de débit vidéo qui simplifient la réduction de la qualité vidéo sans avoir à se soucier des paramètres de codec et de session. Ces préréglages sont conçus pour des cas d'utilisation courants tels que la vidéoconférence et sont adaptés aux résolutions 480p, 540p, 720p et 1080p.
Les préréglages disponibles sont les suivants :
DEFAULT- Le paramètre de débit par défaut du SDK qui offre une expérience visuelle équilibrée pour les flux vidéo.BW_SAVER- Un paramètre de qualité moyenne pour la vidéoconférence qui réduit le débit pour économiser la bande passante.EXTRA_BW_SAVER- Le débit le plus bas pour les communications vidéo essentielles, offrant une faible qualité vidéo mais une utilisation minimale de la bande passante.
Veuillez noter que les valeurs exactes de débit binaire utilisées lors de l'utilisation des préréglages sont spécifiques à l'implémentation et dépendent du codec négocié et du mode de média (relayé ou acheminé). Les SDK clients de l'API Video comprennent des méthodes permettant de définir et d'obtenir le préréglage du débit binaire.
Définition des valeurs de débit binaire brut
Si les préréglages de débit prédéfinis ne répondent pas à vos besoins, vous pouvez définir une valeur de débit brut personnalisée. Cela vous permet de définir des limites de débit spécifiques dans une fourchette allant de 5 000 bps à 10 000 000 bps. Veuillez noter que cette valeur ne s'applique qu'au débit de l'encodeur, de sorte que la surcharge du réseau s'applique toujours en plus de la valeur choisie.
Les SDK clients de la Video API de Vonage comprennent des méthodes pour définir la valeur du débit binaire brut et pour la récupérer. Tant qu'un débit binaire brut n'est pas défini, ou tant que seuls des préréglages sont définis, le getter renvoie 0 (sauf pour le SDK JS, dans lequel la valeur renvoyée est indéfinie). Une fois qu'un débit binaire brut est défini, le getter de préréglage du débit binaire renvoie "custom", ce qui indique qu'une valeur personnalisée a été appliquée. Cependant, n'utilisez pas le préréglage "custom" dans le setter - définissez simplement le numéro de débit binaire spécifique à utiliser comme valeur maximale.
Interaction entre le débit binaire et la couche d'encodage avec VP8 et évolutivité activée
La modification du débit maximal lorsque le VP8 évolutif est utilisé déclenche une efficacité supplémentaire - le Client SDK active ou désactive dynamiquement les couches d'encodage en fonction du débit disponible afin de garantir que le flux vidéo est aussi efficace que possible. Ce processus adapte la résolution à laquelle l'éditeur publie.
Les remarques suivantes s'appliquent à la préétabli lors de l'utilisation de VP8 :
DEFAULT- Ce préréglage utilise toutes les couches d'encodage disponibles. Pour un flux typique, cela comprend jusqu'à trois couches (basse, moyenne et haute).BW_SAVER- Ce préréglage n'utilise que les deux premières couches d'encodage (qualité basse et moyenne). Il est conçu pour économiser la bande passante, ce qui le rend adapté à des scénarios tels que la vidéoconférence, où une qualité vidéo élevée n'est pas aussi essentielle.EXTRA_BW_SAVER- Ce préréglage réduit davantage le débit binaire, en utilisant uniquement la couche d'encodage de base (la plus basse). Il s'agit du mode le plus économe en bande passante, qui offre la qualité minimale requise pour une communication vidéo efficace.
Lorsque vous définissez une valeur de débit brut, si le débit fourni est insuffisant pour maintenir certaines couches d'encodage, le SDK désactive automatiquement les couches supérieures. Par exemple, si le débit est trop faible pour les couches de moyenne ou de haute qualité, ces couches sont supprimées et seule la couche de base est transmise.
Si le nouveau débit fourni est suffisamment élevé pour maintenir d'autres couches de codage, le SDK réactive les couches de codage supérieures, rétablissant progressivement la qualité vidéo en ajoutant les couches moyenne et élevée.
Ce mécanisme garantit que le flux vidéo reste aussi efficace que possible, en maximisant l'utilisation de la bande passante disponible sans compromettre l'expérience de l'utilisateur.
Exemples
Au début d'une session, un éditeur utilise la fonction DEFAULT qui offre une qualité vidéo totale. À ce stade précis de la session, supposons qu'elle a négocié le codec VP8 non extensible. Cependant, après un changement de réseau vers une connexion avec compteur (par exemple, cellulaire), vous pouvez réduire la bande passante de publication à l'aide de l'option BW_SAVER préréglage. Lors de l'utilisation d'un préréglage pour le débit maximal de l'éditeur, le Client SDK s'assure que le niveau de qualité reste le même quel que soit l'événement. Lorsque le réseau revient à une connexion illimitée, vous pouvez rétablir la valeur par défaut en définissant le paramètre DEFAULT préréglé.
Vous pouvez également définir la valeur du débit binaire brut pour fixer un seuil supérieur de bande passante.
Pour plus de détails sur chaque Client SDK, voir ce qui suit :
Les détails sur l'utilisation du débit maximal de l'éditeur dans le SDK du client macOS de Vonage Video sont les mêmes que ceux du SDK du client Linux.
Les properties du composant OTPublisher comprend un élément videoBitratePreset propriété. Attribuez à cette propriété l'une des valeurs suivantes pour que l'éditeur utilise un paramètre prédéfini de débit binaire vidéo : default, bw_saverou extra_bw_saver. Voir Préréglages du débit binaire vidéo pour plus de détails sur ces préréglages.
Exemple :
<OTPublisher
properties={{
videoBitratePreset: 'bw_saver',
// ... other properties
}}
/>
Les videoBitratePreset est ignorée si la propriété maxVideoBitrate (décrite dans la section suivante). Si aucune des deux n'est définie, l'éditeur utilise le préréglage par défaut.
Si les préréglages prédéfinis ne conviennent pas, vous pouvez définir manuellement une valeur de débit binaire brut personnalisée.
Les properties du composant OTPublisher comprend un élément maxVideoBitrate propriété. Pour définir la valeur maximale du débit binaire (au lieu d'un préréglage), réglez cette propriété sur une valeur comprise entre 5 000 et 10 000 000 (en bits par seconde).
Exemple :
<OTPublisher
properties={{
maxVideoBitrate: 500000,
// ... other properties
}}
/>
Le maxVideoBitrate a la priorité sur la propriété videoBitratePreset (décrite dans la section précédente). Si les deux sont définies, seule la propriété maxVideoBitrate est utilisée. Si aucune des deux n'est définie, l'éditeur utilise le préréglage par défaut.
Veuillez noter que l'API est prise en charge par les versions récentes de tous les navigateurs pris en charge. Si vous rencontrez des erreurs, assurez-vous que le client utilise une version de navigateur à jour.
L'objet Publisher comprend setVideoBitratePreset() et
getVideoBitratePreset() des méthodes. Les setVideoBitratePreset() La méthode accepte
des valeurs de type chaîne - "DEFAULT", "BW_SAVER" ou "EXTRA_BW_SAVER" (ou leurs équivalents en minuscules) - et des valeurs de type chaîne.
minuscules) - et la méthode getVideoBitratePreset() renvoie ces valeurs
(ou "CUSTOM"). Voir aussi Préréglages du débit binaire vidéo pour
pour plus de détails sur ces préréglages.
Veuillez noter que les getVideoBitratePreset()
la méthode renvoie undefined si aucun préréglage ou débit n'a été défini auparavant.
Les setVideoBitratePreset() a un seul paramètre : preset, la présélection souhaitée.
Exemple :
console.log(publisher.getVideoBitratePreset()); // undefined
await publisher.setVideoBitratePreset('BW_SAVER'); // or 'DEFAULT' or 'EXTRA_BW_SAVER'
console.log(publisher.getVideoBitratePreset()); // 'BW_SAVER'
Les setVideoBitratePreset() peut générer une erreur avec la méthode name de l'objet d'erreur avec la valeur suivante :
OT_INVALID_PARAMETER- Présélection non valide. Il doit s'agir de "DEFAULT", "BW_SAVER" ou "EXTRA_BW_SAVER".OT_UNEXPECTED_ERROR_CODE- Une erreur inattendue a été rencontrée et la présélection n'a pas été mise à jour.
Envelopper l'appel à la fonction setVideoBitratePreset() dans un bloc try/catch, même si le nom du preset est correct :
const invalidPreset = 'VERY_FAST';
try {
await publisher.setVideoBitratePreset(invalidPreset);
} catch (err) {
console.error(err.name);
// 'OT_INVALID_PARAMETER'
}
Si les préréglages prédéfinis ne conviennent pas, vous pouvez définir manuellement une valeur de débit binaire brut personnalisée.
Pour obtenir le débit vidéo maximal actuellement défini pour un éditeur, appelez la fonction getMaxVideoBitrate() d'un objet Publisher. Elle renvoie le débit maximal actuellement défini (en bits par seconde). Si aucune valeur personnalisée n'est définie, la fonction renvoie undefined.
Exemple :
console.log(publisher.getMaxVideoBitrate());
Pour définir une valeur de débit maximale personnalisée (au lieu d'une valeur prédéfinie), utilisez la fonction setMaxVideoBitrate() d'un objet Publisher. Cette fonction n'a qu'un seul paramètre : bitrateBpsle débit maximal souhaité (en bits par seconde), compris entre 5 000 et 10 000 000.
Exemple :
const new_bitrate = 300000; // 300 kbps
await publisher.setMaxVideoBitrate(new_bitrate);
Les setMaxVideoBitrate() peut générer une erreur avec la méthode name de l'objet d'erreur avec la valeur suivante :
OT_INVALID_PARAMETER- Débit binaire non valide. La valeur doit être 0 ou un nombre compris entre 5000 et 10000000.OT_UNEXPECTED_ERROR_CODE- Une erreur inattendue a été rencontrée et le débit binaire n'a pas été mis à jour.
Envelopper l'appel à la fonction setVideoBitratePreset() dans un bloc try/catch, même si le nombre transmis est valide.
Voir Définition des valeurs de débit binaire brut pour plus de détails.
Le fait de fixer la valeur du débit binaire maximal à 0 supprime toute limitation de débit binaire précédemment définie et rétablit le comportement par défaut.
const zero_bitrate = 0; // no limitations
const int new_bitrate = 300000; // 300 kbps
publisher.setMaxVideoBitrate(new_bitrate);
// publisher.getMaxVideoBitrate() === 300000
publisher.setMaxVideoBitrate(zero_bitrate);
// publisher.getMaxVideoBitrate() === 0
natale-p marked this conversation as resolved.
Appeler le getVideoBitratePreset() après avoir défini un débit binaire personnalisé différent de 0 renvoie CUSTOM.
const zero_bitrate = 0; // no limitations
const new_bitrate = 1000000; // 1 mbps
publisher.setMaxVideoBitrate(new_bitrate);
// publisher.getVideoBitratePreset() === 'CUSTOM'
publisher.setMaxVideoBitrate(zero_bitrate);
// publisher.getVideoBitratePreset() === 'DEFAULT'
Le récupérateur de débit binaire brut renvoie 0 lorsque l'éditeur utilise un préréglage.
let bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setVideoBitratePreset('bw_saver);
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setVideoBitratePreset('extra_bw_saver');
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setMaxVideoBitrate(200000);
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 200000
publisher.setVideoBitratePreset('default');
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
Les PublisherKit .VideoBitratePreset comprend des valeurs prédéfinies :
VideoBitratePresetDefaultVideoBitratePresetBwSaverVideoBitratePresetExtraBwSaverVideoBitratePresetCustom
Voir Préréglages du débit binaire vidéo pour plus de détails sur ces préréglages.
Pour récupérer le préréglage de débit vidéo actuellement configuré pour un éditeur donné, appelez la commande PublisherKit.getVideoBitratePreset() méthode :
PublisherKit.VideoBitratePreset retrievedBitratePreset = publisherKit.getVideoBitratePreset();
System.out.println("The video bitrate preset is: " + retrievedBitratePreset);
Pour définir une présélection, appelez le PublisherKit.setVideoBitratePreset() méthode. Cette méthode comporte un paramètre : preset - une valeur de la liste VideoBitratePreset enum. Ne pas utiliser VideoBitratePresetCustom.
Exemple :
PublisherKit.VideoBitratePreset bitratePreset = PublisherKit.VideoBitratePreset.VideoBitratePresetBwSaver;
publisherKit.setVideoBitratePreset(bitratePreset);
Si les préréglages prédéfinis ne conviennent pas, vous pouvez définir manuellement une valeur de débit binaire brut personnalisée.
Pour obtenir le débit vidéo maximal actuellement défini pour un éditeur, appelez la fonction PublisherKit.getMaxVideoBitrate() Cette méthode renvoie le débit binaire maximal actuellement défini (en bits par seconde). Cette méthode renvoie le débit binaire maximal actuellement défini (en bits par seconde). Si aucune valeur personnalisée n'est définie, la méthode renvoie 0.
Exemple :
int retrievedMaxVideoBitrate = publisherKit.getMaxVideoBitrate();
System.out.println("The maximum video bitrate is: " + retrievedMaxVideoBitrate + " kbps");
Pour définir une valeur de débit maximale personnalisée (au lieu d'une valeur prédéfinie), utilisez la fonction PublisherKit.setMaxVideoBitrate() méthode. Cette méthode a un paramètre : maxVideoBitratele débit maximal souhaité (en bits par seconde). Le débit maxVideoBitrate doit être comprise entre 5 000 et 10 000 000.
Exemple :
int maxVideoBitrate = 300000; // 300 kbps
publisherKit.setMaxVideoBitrate(maxVideoBitrate);
Voir Définition des valeurs de débit binaire brut pour plus de détails.
Le fait de fixer la valeur du débit binaire brut à 0 supprime toute limitation du débit binaire précédemment fixée, ce qui revient au comportement par défaut.
int zeroBitrate = 0; // No limitations
int newBitrate = 300000; // 300 kbps
// Set the maximum video bitrate
publisherKit.setMaxVideoBitrate(newBitrate);
// Validate that the bitrate was set correctly
if (publisherKit.getMaxVideoBitrate() == newBitrate) {
System.out.println("Max video bitrate set successfully to: " + newBitrate);
}
// Reset the maximum video bitrate to the default behavior
publisherKit.setMaxVideoBitrate(zeroBitrate);
// Validate that the bitrate was reset to default
if (publisherKit.getMaxVideoBitrate() == zeroBitrate) {
System.out.println("Max video bitrate reset to default.");
}
Appeler le getVideoBitratePreset() après avoir défini un débit binaire personnalisé renvoie VideoBitratePresetCustom.
int newBitrate = 1000000; // 1 Mbps
// Set a custom bitrate
publisherKit.setMaxVideoBitrate(newBitrate);
// Validate that the preset is set to CUSTOM
if (publisherKit.getVideoBitratePreset() == PublisherKit.VideoBitratePreset.VideoBitratePresetCustom) {
System.out.println("Video bitrate preset set to CUSTOM.");
}
// Reset bitrate to default
publisherKit.setMaxVideoBitrate(zeroBitrate);
// Validate that the preset is reset to DEFAULT
if (publisherKit.getVideoBitratePreset() == PublisherKit.VideoBitratePreset.VideoBitratePresetDefault) {
System.out.println("Video bitrate preset reset to DEFAULT.");
}
Les PublisherKit.getMaxVideoBitrate() renvoie 0 lorsque l'éditeur utilise un préréglage.
// Get the current raw bitrate (default should be 0)
int bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
// Set the preset to BW_SAVER
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetBwSaver);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
// Set the preset to EXTRA_BW_SAVER
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetExtraBwSaver);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
// Set a custom bitrate
publisherKit.setMaxVideoBitrate(200000);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 200000;
// Reset the preset to DEFAULT
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetDefault);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
Les OTVideoBitratePreset comprend des valeurs prédéfinies :
OTVideoBitratePresetDefaultOTVideoBitratePresetBwSaverOTVideoBitratePresetExtraBwSaverOTVideoBitratePresetCustom
Voir Préréglages du débit binaire vidéo pour plus de détails sur ces préréglages.
Pour récupérer le préréglage de débit binaire vidéo actuellement configuré pour un éditeur donné, définissez le paramètre OTPublisherKit.videoBitratePreset propriété :
OTVideoBitratePreset retrievedBitratePreset = publisher.videoBitratePreset;
NSLog(@"The video bitrate preset is: %ld", (long)retrievedBitratePreset);
Pour définir une présélection, assignez une valeur à la touche videoBitratePreset (propriété). Cette propriété accepte l'une des valeurs de la liste OTVideoBitratePreset
à l'exception de l'enum OTVideoBitratePresetCustom.
Exemple :
publisher.videoBitratePreset = OTVideoBitratePresetBwSaver;
Si les préréglages prédéfinis ne conviennent pas, vous pouvez définir manuellement une valeur de débit binaire brut personnalisée.
Pour obtenir le débit vidéo maximum actuellement défini pour un éditeur, vérifiez le paramètre OTPublisherKit.maxVideoBitrate propriété. Cette valeur correspond au débit maximal (en bits par seconde). Si aucune valeur personnalisée n'est définie, la propriété est fixée à 0.
Exemple :
int retrievedMaxVideoBitrate = publisher.maxVideoBitrate;
NSLog(@"The maximum video bitrate is: %d kbps", retrievedMaxVideoBitrate);
Pour utiliser une valeur de débit maximale personnalisée (au lieu d'une valeur prédéfinie), réglez le paramètre OTPublisherKit.maxVideoBitrate propriété. Cette propriété accepte des valeurs comprises entre 5 000 et 10 000 000 (en bits par seconde).
Exemple :
publisher.maxVideoBitrate = 300000; // 300 kbps
Voir Définition des valeurs de débit binaire brut pour plus de détails.
Le fait de fixer la valeur du débit binaire brut à 0 supprime toute limitation du débit binaire précédemment fixée, ce qui revient au comportement par défaut.
publisher.maxVideoBitrate = 300000; // Set the maximum video bitrate to 300 kbps
NSLog(@"Max video bitrate set successfully to: %d", publisher.maxVideoBitrate);
publisher.maxVideoBitrate = 0; // Reset the maximum video bitrate to the default behavior
NSLog(@"Max video bitrate reset to default: %d", publisher.maxVideoBitrate);
Après avoir défini un débit binaire personnalisé, la fonction videoBitratePreset est fixée à OTVideoBitratePresetCustom.
publisher.maxVideoBitrate = 1000000; // Set a custom bitrate to 1 Mbps
if (publisher.videoBitratePreset == OTVideoBitratePresetCustom) {
NSLog(@"Video bitrate preset set to CUSTOM.");
}
publisher.maxVideoBitrate = 0; // Reset bitrate to default
if (publisher.videoBitratePreset == OTVideoBitratePresetDefault) {
NSLog(@"Video bitrate preset reset to DEFAULT.");
}
Les publisher.maxVideoBitrate est fixée à 0 lorsque l'éditeur utilise un préréglage.
NSLog(@"Default bitrate: %d", publisher.maxVideoBitrate); // Default should be 0
publisher.videoBitratePreset = OTVideoBitratePresetBwSaver;
NSLog(@"Bitrate for BW_SAVER preset: %d", publisher.maxVideoBitrate); // Should be 0
publisher.videoBitratePreset = OTVideoBitratePresetExtraBwSaver;
NSLog(@"Bitrate for EXTRA_BW_SAVER preset: %d", publisher.maxVideoBitrate); // Should be 0
publisher.maxVideoBitrate = 200000; // Set a custom bitrate
NSLog(@"Custom bitrate: %d", publisher.maxVideoBitrate);
publisher.videoBitratePreset = OTVideoBitratePresetDefault; // Reset to default preset
NSLog(@"Bitrate after reset to DEFAULT preset: %d", publisher.maxVideoBitrate); // Should be 0
Les VideoBitratePreset comprend des valeurs prédéfinies :
DefaultBwSaverExtraBwSaverCustom
Voir Préréglages du débit binaire vidéo pour plus de détails sur ces préréglages.
Pour récupérer le préréglage de débit vidéo actuellement configuré pour un éditeur donné, accédez à l'option Publisher.VideoBitratePreset propriété :
var preset = publisher.VideoBitratePreset;
if (preset == VideoBitratePreset.BwSaver)
{
Console.WriteLine("The publisher is using the BW_SAVER preset.");
}
Pour définir une présélection, réglez la touche Publisher.VideoBitratePreset à une valeur de la propriétéVideoBitratePreset enum. N'utilisez pas l'enum Custom valeur.
Exemple :
publisher.VideoBitratePreset = VideoBitratePreset.BwSaver;
Console.WriteLine("Bitrate preset successfully set to BW_SAVER.");
Si les préréglages prédéfinis ne conviennent pas, vous pouvez définir manuellement une valeur de débit binaire brut personnalisée.
Pour obtenir le débit vidéo maximal actuel (en bits par seconde), accédez à l'option Publisher.MaxVideoBitrate propriété. Si aucune valeur personnalisée n'est définie, elle prend la valeur 0.
Exemple :
int maxBitrate = publisher.MaxVideoBitrate;
Console.WriteLine($"Current max video bitrate: {maxBitrate} bps");
Pour définir un débit binaire maximum personnalisé (au lieu d'un préréglage), attribuez une valeur (entre 5 000 et 10 000 000) à la fonction MaxVideoBitrate propriété.
Exemple :
int newBitrate = 300000; // 300 kbps
publisher.MaxVideoBitrate = newBitrate;
Console.WriteLine($"Successfully set max video bitrate to {newBitrate} bps.");
Voir Définition des valeurs de débit binaire brut pour plus de détails.
Le fait de fixer la valeur du débit binaire brut à 0 supprime toute limitation du débit binaire précédemment fixée, ce qui revient au comportement par défaut.
int zeroBitrate = 0; // no limitations
int newBitrate = 300000;
publisher.MaxVideoBitrate = newBitrate;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == newBitrate);
publisher.MaxVideoBitrate = zeroBitrate;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == zeroBitrate);
La définition d'un débit binaire personnalisé entraîne l'utilisation de la fonction VideoBitratePreset pour qu'elle soit fixée à VideoBitratePreset.Custom:
publisher.MaxVideoBitrate = 1000000; // 1 Mbps
System.Diagnostics.Debug.Assert(publisher.VideoBitratePreset == VideoBitratePreset.Custom);
publisher.MaxVideoBitrate = 0;
System.Diagnostics.Debug.Assert(publisher.VideoBitratePreset == VideoBitratePreset.Default);
Les MaxVideoBitrate renvoie 0 lorsque l'éditeur utilise un préréglage :
publisher.VideoBitratePreset = VideoBitratePreset.BwSaver;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);
publisher.VideoBitratePreset = VideoBitratePreset.ExtraBwSaver;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);
publisher.MaxVideoBitrate = 200000;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 200000);
publisher.VideoBitratePreset = VideoBitratePreset.Default;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);
Les otc_video_bitrate_preset dans l'enum publisher.h comprend des valeurs prédéfinies :
OTC_VIDEO_BITRATE_PRESET_DEFAULTOTC_VIDEO_BITRATE_PRESET_BW_SAVEROTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVEROTC_VIDEO_BITRATE_PRESET_CUSTOM
Voir Préréglages du débit binaire vidéo pour plus de détails sur ces préréglages.
Pour récupérer le préréglage de débit vidéo actuellement configuré pour un éditeur donné, appelez la commande otc_publisher_get_video_bitrate_preset() fonction :
enum otc_video_bitrate_preset preset = otc_publisher_get_video_bitrate_preset(publisher);
if (preset == OTC_VIDEO_BITRATE_PRESET_BW_SAVER) {
printf("The publisher is using the BW_SAVER preset.\n");
}
Pour définir une présélection, appelez le otc_publisher_set_video_bitrate_preset() Cette fonction comprend deux paramètres. Cette fonction comprend deux paramètres :
publisher- Un pointeur sur l'instance otc_publisher.preset- Une valeur deotc_video_bitrate_preset. Ne pas utiliserOTC_VIDEO_BITRATE_PRESET_CUSTOM.
La fonction renvoie l'une de ces valeurs :
OTC_SUCCESS- Le préréglage a été appliqué avec succès.OTC_ERROR_INVALID_PARAMETER- L'éditeur fourni est NULL ou le preset n'est pas valide.
Exemple :
otc_status status = otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_BW_SAVER);
if (status == OTC_SUCCESS) {
printf("Bitrate preset successfully set to BW_SAVER.\n");
} else {
printf("Failed to set bitrate preset.\n");
}
Si les préréglages prédéfinis ne conviennent pas, vous pouvez définir manuellement une valeur de débit binaire brut personnalisée.
Pour obtenir le débit vidéo maximal actuellement défini pour un éditeur, appelez la fonction otc_publisher_get_max_video_bitrate() Cette fonction renvoie le débit binaire maximal actuellement défini (en bits par seconde). Elle renvoie le débit maximal actuellement défini (en bits par seconde). Si aucune valeur personnalisée n'est définie, la fonction renvoie 0.
Exemple :
int max_bitrate = otc_publisher_get_max_video_bitrate(publisher);
printf("Current max video bitrate: %d bps\n", max_bitrate);
Pour définir une valeur de débit maximale personnalisée (au lieu d'une valeur prédéfinie), utilisez la fonction otc_publisher_set_max_video_bitrate() Cette fonction est paramétrée de la manière suivante Cette fonction a les paramètres suivants :
publisher- Un pointeur sur une instance otc_publisher existante.bitrate_bps- Le débit maximal souhaité (en bits par seconde). Il doit être compris entre 5 000 et 10 000 000. La fonction renvoie l'une des valeurs suivantes :OTC_SUCCESS- Le débit binaire a été appliqué avec succès.OTC_ERROR_INVALID_PARAMETER- Le pointeur de l'éditeur estNULLoubitrate_bpsest en dehors de la plage. Exemple :
int new_bitrate = 300000; // 300 kbps
otc_status status = otc_publisher_set_max_video_bitrate(publisher, new_bitrate);
if (status == OTC_SUCCESS) {
printf("Successfully set max video bitrate to %d bps.\n", new_bitrate);
} else {
printf("Failed to set max video bitrate.\n");
}
Voir Définition des valeurs de débit binaire brut pour plus de détails.
Le fait de fixer la valeur du débit binaire brut à 0 supprime toute limitation du débit binaire précédemment fixée, ce qui revient au comportement par défaut.
const int zero_bitrate = 0; // no limitations
const int new_bitrate = 300000; // 300 kbps
otc_status status = otc_publisher_set_max_video_bitrate(publisher, new_bitrate);
if (status == OTC_SUCCESS) {
assert(otc_publisher_get_max_video_bitrate(publisher) == new_bitrate);
}
status = otc_publisher_set_max_video_bitrate(publisher, zero_bitrate);
if (status == OTC_SUCCESS) {
assert(otc_publisher_get_max_video_bitrate(publisher) == zero_bitrate);
}
Appeler le (otc_publisher_get_video_bitrate_preset()) après le retour d'un débit binaire personnalisé OTC_VIDEO_BITRATE_PRESET_CUSTOM.
const int new_bitrate = 1000000; // 1 mbps
otc_status status = otc_publisher_set_max_video_bitrate(publisher, new_bitrate);
if (status == OTC_SUCCESS) {
assert(otc_publisher_get_video_bitrate_preset(publisher) == OTC_VIDEO_BITRATE_PRESET_CUSTOM);
}
status = otc_publisher_set_max_video_bitrate(publisher, zero_bitrate);
if (status == OTC_SUCCESS) {
assert(otc_publisher_get_video_bitrate_preset(publisher) == OTC_VIDEO_BITRATE_PRESET_DEFAULT);
}
Le récupérateur de débit binaire brut renvoie 0 lorsque l'éditeur utilise un préréglage.
// Assume all the statuses are OTC_SUCCESS
int bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);
otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_BW_SAVER);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);
otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVER);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);
otc_publisher_set_max_video_bitrate(publisher, 200000);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 200000);
otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_DEFAULT);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);
Meilleures pratiques
Pour garantir les meilleures performances et une utilisation optimale de la bande passante, suivez ces bonnes pratiques :
Utiliser des préréglages de débit prédéfinis - Dans la mesure du possible, utilisez les préréglages de débit binaire prédéfinis (
DEFAULT,BW_SAVER,EXTRA_BW_SAVER) pour gérer la qualité vidéo. Ces préréglages sont adaptés à des scénarios courants tels que la vidéoconférence, garantissant l'équilibre entre la qualité vidéo et l'efficacité de la bande passante. Plus important encore, ils font abstraction des détails du codec et des modes de média.Soyez prudent avec les paramètres de débit binaire personnalisés - Bien que les paramètres de débit personnalisés vous donnent plus de contrôle, leur utilisation est liée aux détails du codec qui peuvent changer pendant la phase de négociation WebRTC. Nous recommandons de les utiliser avec parcimonie, et uniquement lorsqu'un seuil strict sur le débit est nécessaire.
N'appliquez pas de débits binaires personnalisés ou de préréglages aux flux de partage d'écran. - L'encodage d'un flux de partage d'écran diffère de l'encodage d'un flux de caméra. L'utilisation de l'API de débit maximal pour limiter un flux de partage d'écran peut dégrader la qualité sans offrir d'amélioration de la bande passante.