Vidéo évolutive

La vidéo évolutive est une fonction pour les sessions acheminées qui améliore la qualité vidéo dans les sessions multipartites en permettant à chaque abonné de recevoir une qualité vidéo qui correspond aux conditions actuelles du réseau, indépendamment de tous les autres abonnés.

Sans vidéo évolutive, le routeur multimédia transmet la même qualité vidéo à tous les abonnés d'un flux. Lorsque la connexion d'un abonné se dégrade, le routeur utilise l'estimation de la bande passante pour indiquer à l'éditeur de réduire son débit, ce qui diminue la qualité pour tous les abonnés de ce flux. Avec la vidéo active évolutive, le routeur sélectionne la couche de qualité la plus appropriée pour chaque abonné de manière indépendante et en temps réel, sans affecter ce que les autres abonnés reçoivent.

La vidéo évolutive nécessite une session acheminée (une session qui utilise le routeur de médias). Elle n'est pas disponible dans les sessions relayées et ne serait pas utile dans ce cas, puisque les flux voyagent directement entre les clients, sans routeur sur le chemin pour sélectionner ou changer de couche de qualité. Voir Le routeur média et les modes média.

La vidéo évolutive est activée par défaut. Le réglage au niveau de l'application est par défaut de AutoCela signifie que le routeur de médias active automatiquement la vidéo évolutive lorsqu'il y a plus de deux clients dans une session et que toutes les autres conditions sont remplies. Vous pouvez également le régler sur Sur (toujours active) ou Arrêt - voir Paramètres au niveau de l'application pour plus de détails. Pour la plupart des Applications, aucune modification du code n'est nécessaire.

Codecs et modèles d'évolutivité

Le fonctionnement de la vidéo évolutive dépend du codec négocié par l'éditeur. Comprendre les différences vous permet de choisir le codec adapté à votre cas d'utilisation, par exemple lorsque vous devez optimiser l'utilisation de l'unité centrale de l'éditeur, la bande passante en amont ou l'adaptation de la qualité du côté de l'abonné.

VP8 : Simulcast

Avec VP8La vidéo évolutive est mise en œuvre grâce à diffusion simultanée. L'éditeur code et transmet plusieurs flux binaires totalement distincts à différentes résolutions et fréquences d'images - par exemple, 1080p, 540p et 270p, chacun avec ses propres couches temporelles (fréquence d'images). Chaque flux est autonome et peut être décodé seul.

Chaque flux étant totalement indépendant, le routeur média peut instantanément faire passer un abonné à un niveau de qualité différent, sans réencodage, ce qui lui confère une grande résilience face aux changements de conditions du réseau.

Compromis : L'encodage et le téléchargement de plusieurs flux nécessitent plus de CPU et de bande passante en amont du côté de l'éditeur que l'envoi d'une seule qualité. L'encodage des couches de basse résolution est nettement moins coûteux que celui de la qualité la plus élevée, mais le coût total reste supérieur à celui d'un flux non simulcast.

VP9 : codage vidéo évolutif (SVC)

Avec VP9Utilisation de la vidéo évolutive Codage vidéo évolutif (SVC). L'éditeur code un flux binaire unique dans lequel sont intégrées mathématiquement plusieurs couches spatiales (résolution) et temporelles (fréquence d'images). Chaque couche supérieure dépend des couches inférieures, de sorte qu'un décodeur ne recevant que la couche de base obtient une qualité médiocre, tandis qu'un décodeur recevant toutes les couches obtient une qualité totale - le tout à partir du même flux binaire.

Le coût de l'unité centrale de l'éditeur pour l'encodage SVC est plus élevé que pour l'encodage d'un flux unique - à peu près comparable à la diffusion simultanée VP8 - mais le SVC nécessite moins de bande passante en amont car il n'y a qu'un seul flux binaire à télécharger au lieu de plusieurs flux indépendants. À partir du flux codé unique, le routeur média peut extraire et transmettre exactement le bon sous-ensemble de couches pour chaque abonné, ce qui permet une adaptation efficace et flexible de la qualité et une meilleure résistance à la perte de paquets.

Le SVC nécessite que le point d'extrémité de l'éditeur et le routeur de médias prennent tous deux en charge le SVC VP9. Firefox supporte VP9 mais pas SVC - un éditeur de Firefox envoie du VP9 sans couches, de sorte que le Media Router ne peut pas adapter la qualité pour ce flux.

Pour une explication complète des couches SVC, des modes d'extensibilité (L1T3, L2T3, L3T3), le comportement en matière d'archivage et la prise en charge des appareils, voir Codage vidéo évolutif VP9 pour les sessions acheminées.

La différence clé en un coup d'œil

Aspect Diffusion simultanée (VP8) SVC (VP9)
Ce que l'éditeur envoie Plusieurs flux de données indépendants à différentes résolutions et fréquences d'images (SSRC/RID distincts) 1 flux binaire avec des couches spatiales et temporelles intégrées (un seul SSRC)
Couches spatiales Multi-flux : chaque résolution est un flux encodé distinct Incorporé dans un flux binaire unique
Couches temporelles Chaque flux de diffusion simultanée peut inclure des couches temporelles Incorporé dans un flux binaire unique
Rôle de routeur de médias Choisir le flux à transférer Extraire et transmettre les bonnes couches
Prise en charge de l'éditeur de Firefox Pris en charge par les encodages basés sur le RID VP9 oui ; SVC non pris en charge par Firefox

Rapport de résolution de la couche spatiale : Chaque étape spatiale utilise un Rapport de résolution 2:1. Un L3T3 comporte des couches à 100 %, 50 % et 25 % de la résolution de la source (par exemple, 1080p → 540p → 270p). C'est pourquoi setPreferredResolution() peuvent viser des résolutions sensiblement différentes.

H.264 : Vidéo évolutive non prise en charge

Le codec H.264 est entièrement pris en charge dans la Video API de Vonage pour la publication et l'abonnement, mais la vidéo évolutive n'est pas disponible pour les flux H.264. Le routeur multimédia ne peut pas changer de couche de qualité pour les flux H.264, et les paramètres de vidéo évolutive n'ont aucun effet lorsque H.264 est négocié. Si votre application nécessite une vidéo évolutive, utilisez plutôt VP8 ou VP9. Voir Codecs vidéo.

Support vidéo évolutif

La vidéo évolutive est prise en charge pour la diffusion simultanée VP8 et le SVC VP9. Elle n'est pas prise en charge pour Flux H.264. Il n'est disponible qu'en sessions acheminées.

Les clients suivants prennent en charge la vidéo évolutive :

  • SDK Web - Chrome, Firefox, Safari, Samsung Internet, WebView Android, WebView sur iOS et Edge basé sur Chromium. Remarque : Firefox prend en charge la diffusion simultanée VP8, mais pas le SVC VP9.
  • SDK Android (sur les appareils compatibles)
  • SDK iOS (sur les appareils compatibles)
  • SDK Windows
  • SDK Linux
  • SDK macOS
  • SDK React Native (sur les appareils compatibles)

Pour plus de détails sur la compatibilité des appareils et des navigateurs avec le VP9 SVC, voir Codage vidéo évolutif VP9 pour les sessions acheminées.

Remarque : Par défaut, la vidéo évolutive est désactivée pour les flux de partage d'écran et activée pour les flux de caméras et de sources vidéo personnalisées. Pour activer la vidéo évolutive pour le partage d'écran, voir Flux de partage d'écran évolutifs.

Comment utiliser la vidéo évolutive

Paramètres au niveau de l'application

La vidéo évolutive dispose de trois modes que vous pouvez définir par application dans l'onglet Tableau de bord Vonage:

  1. Connectez-vous à votre Video API Account de Vonage.
  2. Dans le menu de gauche, sélectionnez Applications.
  3. Pour une application existante, cliquez sur le menu à trois points et sélectionnez Editer. Pour une nouvelle application, accédez à la section capacité après avoir cliqué sur Créer une nouvelle application.
  4. Basculer pour activer le Vidéo option.
  5. Faites défiler vers le bas et cliquez sur Afficher les fonctions avancées.
  6. Sous Vidéo évolutiveChoisissez l'une des options suivantes :
    • Auto (recommandé) - Le routeur de médias permet une vidéo évolutive lorsqu'il y a plus de deux clients dans une session. Laissez cette option sélectionnée, sauf si vous avez une raison particulière de l'ignorer.
    • Sur - La vidéo évolutive est toujours activée (dans les clients pris en charge) pour toutes les sessions de cette application.
    • Arrêt - La vidéo évolutive est désactivée pour toutes les sessions dans cette application. Utilisez cette option pour verrouiller la résolution et la fréquence d'images, ou pour réduire l'utilisation de l'unité centrale et de la bande passante de l'éditeur.
  7. Cliquez sur Enregistrer les modifications.

Remarque : Ce réglage permet de contrôler Diffusion simultanée VP8 comportement. VP9 utilise toujours le SVC lorsqu'il est pris en charge, et H.264 ne prend pas en charge la vidéo évolutive - aucun des deux n'est affecté par ce paramètre.

Remarque : Les flux nécessitent plus de bande passante en amont de la part de l'éditeur lorsque la vidéo évolutive est active, car des couches de qualité supplémentaires sont encodées et transmises.

Flux de partage d'écran évolutifs

Par défaut, la vidéo évolutive est handicapé pour les flux de partage d'écran et activée pour les flux de caméras et de sources vidéo personnalisées. Le contenu du partage d'écran change généralement moins souvent que la vidéo de la caméra, de sorte que le coût d'encodage supplémentaire de la vidéo évolutive n'est généralement pas nécessaire. Toutefois, son activation peut s'avérer utile dans les sessions où les abonnés au partage d'écran ont des conditions de réseau variables. Vous pouvez remplacer la valeur par défaut par éditeur :

Réglage de la fréquence d'images et de la résolution préférées de l'abonné

Lorsqu'un flux est publié avec de la vidéo évolutive, les abonnés peuvent signaler au routeur multimédia la qualité qu'ils préfèrent. Le routeur multimédia sélectionne la couche disponible la plus proche qui correspond aux conditions réelles du réseau de l'abonné.

Important : Appel setPreferredResolution() ou setPreferredFrameRate() déclenche une renégociation avec le routeur multimédia. Une telle opération répétée ou en succession rapide est coûteuse : elle consomme de l'énergie et peut dégrader la qualité globale du flux. Définissez les valeurs préférentielles une seule fois (ou seulement lorsque la disposition de l'abonné change de manière significative), plutôt que de les ajuster en permanence.

SDK Taux de rafraîchissement Résolution
SDK Web Subscriber.setPreferredFrameRate() - voir subscribe-streams Guide web Subscriber.setPreferredResolution() - voir subscribe-streams Guide web
SDK Android SubscriberKit.setPreferredFrameRate() - voir subscribe-streams Guide Android SubscriberKit.setPreferredResolution() - voir subscribe-streams Guide Android
SDK iOS OTSubscriberKit.preferredFrameRate - voir subscribe-streams iOS guide OTSubscriberKit.preferredResolution - voir subscribe-streams iOS guide
SDK Windows Subscriber.PreferredFramerate - voir subscribe-streams Guide Windows Subscriber.PreferredResolution - voir subscribe-streams Guide Windows
SDK Linux otc_subscriber_set_preferred_frame_rate() - voir subscribe-streams Guide Linux otc_subscriber_set_preferred_resolution() - voir subscribe-streams Guide Linux
React Native preferredFrameRate propriété de OTSubscriber - voir subscribe-streams Guide React Native preferredResolution propriété de OTSubscriber - voir subscribe-streams Guide React Native

Comment vérifier que la vidéo évolutive fonctionne ?

Il n'y a pas d'indicateur unique "vidéo évolutive active" dans le SDK, mais vous pouvez confirmer qu'il fonctionne à l'aide des approches suivantes.

Inspecteur vidéo

Les Inspecteur vidéo dans le module Quality Metrics affiche le codec, la résolution et la fréquence d'images. Survolez n'importe quel point d'une ligne tracée pour afficher le codec actuellement utilisé. Lorsque la vidéo évolutive est activée, la résolution et/ou la fréquence d'images pour un ou plusieurs abonnés peuvent s'ajuster dynamiquement en fonction de l'évolution des conditions du réseau.

Statistiques WebRTC

Chaque SDK expose le rapport de statistiques WebRTC sous-jacent. Du côté de l'éditeur, inspectez RTCOutboundRtpStreamStats:

  • Avec Diffusion simultanée VP8, vous verrez de multiples ssrc avec des entrées différentes frameWidth/frameHeight un par couche de diffusion simultanée.
  • Avec VP9 SVC, vous verrez un seul ssrc avec un scalabilityMode (par exemple, L3T3).

Méthodes SDK pour accéder au rapport de statistiques :

Liste de contrôle : Conditions requises pour que la vidéo évolutive soit active

Si vous n'observez pas de comportement adaptatif en matière de qualité, vérifiez les points suivants :

  • La session est acheminé (non relayé).
  • La vidéo évolutive n'est pas réglée sur Arrêt au niveau de l'application.
  • Le codec négocié est VP8 ou VP9 (pas H.264).
  • L'éditeur fonctionne sur un client pris en charge.

Idées reçues et FAQ

La vidéo évolutive est-elle la même chose que le VP9 SVC ?

Non. "Vidéo évolutive" est le nom de la fonction de l'API Video de Vonage. L'API mécanisme technique dépend du codec :

  • VP8 met en œuvre la vidéo évolutive par le biais de diffusion simultanée - l'éditeur envoie plusieurs flux indépendants.
  • VP9 met en œuvre la vidéo évolutive par le biais de SVC - l'éditeur envoie un flux avec des couches intégrées.

Ces deux mécanismes permettent au routeur multimédia d'adapter la qualité que reçoit chaque abonné. Lorsque la documentation mentionne la "vidéo évolutive" sans spécifier de codec, elle fait référence à la fonctionnalité dans son ensemble.

La définition d'un codec préféré force-t-elle l'activation de la vidéo évolutive ?

Non. La sélection d'un codec préféré (dans le tableau de bord ou par le biais de l'option preferredVideoCodecs ) est indépendante de la vidéo évolutive. L'activation de la vidéo évolutive dépend de tous les éléments suivants :

  1. Paramètre de l'application vidéo évolutive (Activé / Désactivé / Auto).
  2. La session en cours d'acheminement.
  3. Le codec négocié prenant en charge la vidéo évolutive (VP8 ou VP9 - pas H.264).
  4. Le client ou le navigateur de l'éditeur prenant en charge la vidéo évolutive.

Pourquoi la Subscriber.setPreferredResolution() Ne pas adapter la qualité ?

Le côté abonné setPreferredResolution() et setPreferredFrameRate() sont hints to the Media RouterLe routeur multimédia ne peut agir sur ces indices que lorsqu'il choisit activement entre les couches vidéo évolutives pour cet abonné. Le routeur multimédia ne peut agir sur ces indications que lorsqu'il sélectionne activement des couches vidéo évolutives pour cet abonné. Si l'une des conditions suivantes est remplie, il n'y a pas de couches à sélectionner et les indications n'ont aucun effet :

  • La vidéo évolutive est désactivée au niveau de l'application ou du flux de l'éditeur.
  • Le codec négocié est le H.264 (la vidéo évolutive n'est pas prise en charge).
  • Le client de l'éditeur ne produit pas de couches évolutives (par exemple, un éditeur de Firefox qui envoie du VP9 sans couches SVC).
  • L'éditeur a une contrainte de CPU ou de bande passante et n'envoie pas de couches supérieures pour que le routeur puisse faire son choix.
  • La session est relayée - dans une session relayée, le routeur média ne transmet pas les flux, la sélection de couche ne peut donc pas avoir lieu. Notez que dans les sessions relayées (P2P), l'encodeur de l'éditeur adapte sa sortie directement en fonction des conditions du réseau de l'abonné, mais ce n'est pas la même chose que la sélection de couche vidéo évolutive.

Remarque : Dans les sessions relayées, certains SDK peuvent encore accepter ces appels API sans erreur, mais le routeur de médias n'est pas impliqué dans le transfert de flux et les préférences ne peuvent donc pas être respectées pour la sélection de la couche de qualité.

Remarque : Les API de résolution et de fréquence d'images côté éditeur (lorsqu'elles sont disponibles dans certains SDK) se comportent différemment : elles contrôlent directement la résolution et la fréquence d'images du flux encodé, et non un indice de qualité du Media Router.

Puis-je mélanger des éditeurs évolutifs et non évolutifs dans la même session ?

Oui, la vidéo évolutive est déterminée par flux, et non par session. Une session peut avoir simultanément des éditeurs utilisant la vidéo évolutive et des éditeurs qui ne l'utilisent pas (par exemple, des éditeurs H.264 ou des clients publiant avec la vidéo évolutive désactivée). Le routeur multimédia traite chaque flux indépendamment.

La vidéo évolutive a-t-elle une incidence sur l'archivage ?

Pour Diffusion simultanée VP8l'archiveur enregistre en utilisant la couche de qualité la plus élevée disponible.

Pour VP9 SVCLes archives composées sont toujours transcodées en H.264/AAC MP4, quel que soit le codec de la session. Les archives composées sont toujours transcodées en H.264/AAC MP4, quel que soit le codec de la session.

La lecture des fichiers WebM VP9 SVC peut ne pas fonctionner dans tous les lecteurs multimédias. Pour les instructions de lecture et les commandes de transcodage, voir Notes sur l'archivage dans le guide VP9.

Pour plus d'informations, voir cet article de soutien.