Codage vidéo évolutif VP9 pour les sessions acheminées

À propos de la prise en charge du VP9 pour le Scalable Video Coding (SVC) dans les sessions acheminées

Aperçu de VP9

VP9 est un format de codage vidéo ouvert et libre de droits développé par Google. Il succède au VP8 et offre une meilleure efficacité de compression. succède au VP8 et offre une meilleure efficacité de compression. Cela signifie que le VP9 peut coder des vidéos de meilleure qualité avec le même débit que le VP8. Cela signifie que le VP9 peut encoder des vidéos de meilleure qualité au même débit que le VP8, bien qu'il puisse nécessiter plus de puissance de traitement. même s'il peut nécessiter une plus grande puissance de traitement.

Pour plus d'informations, voir le Codecs vidéo guide du développeur.

Codage vidéo évolutif (SVC)

L'un des principaux avantages du VP9 est qu'il prend en charge les éléments suivants Codage vidéo évolutif (SVC). La technologie SVC permet à un flux vidéo unique de contenir plusieurs qualités spatiales et temporelles. Cela permet à une SFU (Selective Forwarding Unit), telle que la Routeur vidéo multimédia de Vonage, pour transmettre différentes résolutions et fréquences d'images à chaque client abonné à un éditeur prenant en charge la technologie SVC. Cette méthode est plus efficace que diffusion simultanée, où l' éditeur diffuse plusieurs flux vidéo à différentes résolutions, comme c'est souvent le cas avec le format VP8.

Mode évolutif

Le mode d'évolutivité dans SVC définit le nombre et les types de couches spatiales et temporelles d'un flux SVC, ainsi que les dépendances entre celles-ci. Pour plus de détails, consultez le Spécification W3C WebRTC SVC. Le mode d'évolutivité est défini pour un éditeur, et le routeur multimédia Vonage Video se chargera de transmettre à l'abonné le flux approprié parmi ceux disponibles.

Lors de la diffusion d'un flux vidéo, la Video API Vonage prend en charge les formats L1T3, L2T3 et L3T3 les modes d'extensibilité (trois couches temporelles avec un nombre variable de couches spatiales) tant pour les clients Web que pour les clients natifs.

Veuillez noter que le nombre de couches spatiales sera ajusté automatiquement en fonction de la résolution du flux de la caméra et de la bande passante estimée entre l'éditeur et le routeur multimédia vidéo Vonage. Si la bande passante est suffisante, les couches spatiales pour la FHD sont de 1920 x 1080, 960 x 540 et 480 x 270 pixels. Pour la HD, elles sont de 1 280 x 720, 640 x 360 et 320 x 180. Pour la SD, il n’y a que deux couches spatiales : 720 x 480 et 360 x 240. De même, les couches temporelles seront de 30 images par seconde pour la couche temporelle la plus élevée, de 15 images par seconde pour la couche temporelle intermédiaire et de 7,5 images par seconde pour la couche temporelle la plus basse.

Tant pour les clients Web que pour les clients natifs, lors de la publication d'un flux de partage d'écran, le mode d'évolutivité est déterminé par une option définie lors de la publication (pour plus de détails, voir la Page vidéo évolutive. S’il est désactivé, le flux utilisera le mode L1T1, offrant une seule couche spatiale et temporelle (pas d’évolutivité). En revanche, lorsqu’elle est activée, le système choisira dynamiquement entre les modes L1T1, L2T1 ou L3T1 en fonction de la bande passante estimée entre l’éditeur et le routeur multimédia Vonage Video, ainsi que de la résolution du flux de partage d’écran.

Simulcast (utilisé dans VP8) vs SVC (utilisé dans VP9)

Dans le cadre de la diffusion simultanée (utilisée avec VP8), l’éditeur envoie plusieurs flux vidéo indépendants, chacun composé de différentes couches temporelles présentant des résolutions et des débits binaires variables, au serveur multimédia. Ces couches temporelles encodées au sein de multiples flux permettent au serveur de sélectionner de manière dynamique le flux et la couche les plus adaptés à chaque abonné en fonction des conditions du réseau. Si cette méthode améliore l’efficacité en ajustant la qualité vidéo en temps réel, elle oblige l’éditeur à encoder (ce qui augmente la charge du processeur) et à transmettre (ce qui augmente la charge du réseau) plusieurs versions d’un même flux afin de s’adapter aux différentes conditions.

En revanche, le SVC (Scalable Video Coding), tel qu’il est pris en charge par le VP9, intègre plusieurs niveaux de qualité spatiale et temporelle dans un seul flux. Le serveur multimédia peut alors extraire et transmettre la couche appropriée à chaque abonné sans que l'éditeur ait à envoyer plusieurs flux. Le SVC est ainsi plus économe en bande passante et améliore l'efficacité de la charge de travail de l'éditeur par rapport à la diffusion simultanée.

Utilisation

Vous pouvez tester cette fonctionnalité en sélectionnant VP9 comme codec vidéo privilégié depuis la page « Projet » de votre Video API Account.

  • Pour les sessions relayées, le SVC est désactivé.
  • Pour les sessions routées, le SVC est automatiquement activé.

Notes sur l'archivage des vidéos VP9

Notre plateforme propose deux modes d'archivage : les archives composées et les archives de flux individuelles, qui continueront de fonctionner lorsque le VP9 sera sélectionné comme codec préféré. Dans les archives composées, les enregistrements sont stockés sous forme de fichiers MP4 composés contenant une vidéo H.264 et un son AAC, offrant ainsi un fichier de sortie unique et finalisé. En revanche, les archives de flux individuels stockent les médias de chaque participant séparément sous forme de flux WebM, avec une vidéo au format VP9 SVC (Scalable Video Coding).

La prise en charge du format VP9 SVC peut varier selon les lecteurs, qu'ils soient commerciaux ou open source, en fonction de la version et de l'implémentation spécifique. Par exemple, lors de la lecture d'archives de flux individuelles, tous les lecteurs ne sont pas capables de gérer correctement les flux encodés en SVC. Dans le cas de FFMPEG, seul le codec libvpx-vp9 est capable de décoder correctement ces flux. Pour une lecture correcte, la commande suivante peut être utilisée :

ffplay -vcodec libvpx-vp9 vp9_with_svc.webm

De plus, si vous avez besoin de convertir un fichier WebM encodé en SVC en un flux VP8 standard sans SVC (pour une compatibilité plus large), vous pouvez utiliser la commande FFMPEG suivante pour transcoder la vidéo :

ffmpeg -c:v libvpx-vp9 -i vp9_with_svc.webm -c:v libvpx vp8.webm

Ce transcodage supprime les couches SVC, ce qui garantit que la vidéo pourra être lue sur des lecteurs qui ne prennent pas entièrement en charge les formats VP9 et/ou SVC.

De plus, si vous souhaitez supprimer les couches SVC tout en conservant le codec VP9, vous pouvez utiliser :

ffmpeg -c:v libvpx-vp9 -i vp9_with_svc.webm vp9_without_svc.webm

Problèmes connus

Nous avons connaissance des limitations et des problèmes connus suivants :

  • Pour les charges de travail d’Experience Composer comportant du contenu vidéo très dynamique et des textures complexes, la qualité vidéo en sortie des flux Experience Composer encodés en VP9 a obtenu un score inférieur lors des tests de qualité vidéo perceptuelle (VMAF) par rapport aux flux encodés en VP8 . Cette différence de qualité d’Experience Composer ne devrait pas être perceptible dans le cadre d’utilisations standard de visioconférence avec composition vidéo.

Questions fréquemment posées

Quel est l'état de la compatibilité avec le navigateur VP9 ?

Depuis 2024, le format VP9 est entièrement pris en charge par tous les principaux navigateurs. Cela inclut Google Chrome, Firefox, Microsoft Edge, Samsung Internet, Opera et WebView sur Android, qui offrent une compatibilité totale avec le VP9 depuis environ 2016. Safari 15 et versions ultérieures d'Apple ainsi que WebView sur iOS 15 et versions ultérieures prennent également en charge le VP9.

Quels sont les appareils qui prennent en charge le VP9 ?

À partir de 2025, la plupart des appareils modernes prendront entièrement en charge le format VP9 pour les services WebRTC. Cela concerne les ordinateurs de bureau, les ordinateurs portables et les appareils mobiles équipés des versions récentes des principaux navigateurs tels que Google Chrome, Firefox, Microsoft Edge, Opera, WebView sur Android, ainsi que Safari et WebView sur iOS (à partir de la version 15). Bien que ces navigateurs puissent effectuer le codage vidéo par voie matérielle, la prise en charge matérielle de l’encodage et du décodage n’est pas aussi répandue. Par exemple, même si le matériel est capable d’encoder et de décoder le VP9, nos SDK natifs utiliseront le codage vidéo logiciel pour le VP9.

D'autre part, la prise en charge matérielle et logicielle du SVC n'est pas aussi omniprésente.

Remarque : le format VP9 est pris en charge par Firefox, mais pas le SVC.

Quels sont les dispositifs recommandés ?

Le VP9 offre une compression vidéo améliorée par rapport au VP8, au prix d'une charge plus importante pour le processeur. Les modèles d'appareils récents des grandes marques (par exemple, l'iPhone d'Apple, le Pixel de Google, le Galaxy de Samsung, etc.) devraient offrir de bonnes performances.

L'API Vonage Media Processor présente également des contraintes similaires en matière de puissance de calcul. Les appareils qui répondent à ces exigences devraient prendre correctement en charge le format VP9.

Appareils recommandés par plate-forme :

Quelles versions du Client SDK puis-je utiliser ?

Ce qui est indiqué dans le page codecs s'applique. Toutefois, la prise en charge complète des formats VP9 et SVC, avec les améliorations apportées au cours de la phase d'accès anticipé, est disponible à partir de la version 2.29. Si vous ne pouvez pas effectuer la mise à jour, la prise en charge de base des formats VP9 et SVC est disponible à partir de la version 2.27 des Client SDK pour clients Web et natifs.

Que se passe-t-il si un navigateur, un SDK ou un appareil ne prend pas en charge le format VP9 ?

S'il s'agit d'un diffuseur, il utilisera le format VP8 par défaut. S'il s'agit d'un abonné, il ne pourra pas s'abonner à la vidéo et ne recevra que le son.

Que se passe-t-il si un navigateur/SDK/appareil prend en charge VP9 mais pas SVC ?

Tant pour les éditeurs que pour les abonnés, le format VP9 fera l'objet d'une négociation, mais sans la prise en charge de l'évolutivité. Le terminal utilisera, de manière transparente, le format VP9 sans SVC.

Comment contrôler le codec dans une session ?

Comme pour tout autre codec, l'outil Video Inspector affiche le codec, la résolution et la fréquence d'images dans le module « Quality Metrics ». Il suffit de passer la souris sur n'importe quel point d'une courbe pour voir le codec utilisé.

Comment puis-je savoir quel codec un point final utilise ?

Les SDK fournissent des méthodes permettant de récupérer l'objet RTCStatsReport pour chaque flux, qui inclut les codecs audio et vidéo utilisés. Pour consulter des exemples de code, rendez-vous sur la page Manuel de référence de l'abonné ou le Référence de l'éditeur Manuel pour JS. Pour Linux, vous trouverez des informations supplémentaires ici.