À 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). Le SVC permet à un flux vidéo unique de contenir plusieurs qualités spatiales et temporelles. Cela permet à une SFU (Selective Forwarding Unit), telle que l'unité de transmission sélective, d'avoir une qualité spatiale et temporelle. Routeur vidéo multimédia de VonageIl s'agit d'un système qui permet de transmettre des résolutions et des fréquences d'images différentes à chaque client abonné à un éditeur compatible avec le SVC. Cette méthode est plus efficace que celle du diffusion simultanéelorsque l'éditeur envoie plusieurs flux vidéo à des résolutions différentes, comme c'est généralement le cas avec le VP8.
Mode évolutif
Le mode d'extensibilité du SVC définit le nombre et les types de couches spatiales et temporelles dans un flux SVC, ainsi que les dépendances entre elles. Pour plus de détails, voir la page Spécification SVC du W3C WebRTC. Le mode d'extensibilité est défini pour un éditeur, et le routeur vidéo de Vonage se chargera de transmettre à l'abonné le flux approprié parmi ceux qui sont disponibles.
Lors de la publication d'un flux de caméra, l'API Video de Vonage prend en charge l'option L1T3, L2T3et L3T3 les modes d'extensibilité
(trois couches temporelles avec un nombre variable de couches spatiales) pour les clients web et 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 Video Media Router de Vonage.
- Avec une largeur de bande suffisante, les couches spatiales pour le FHD sont 1920x1080, 960x540 et 480x270 pixels.
- Pour la HD, il s'agit de 1280x720, 640x360 et 320x180. Pour la SD, il n'y a que deux couches spatiales : 720x480 et 360x240.
- De même, les couches temporelles seront de 30 FPS pour la couche temporelle la plus élevée, de 15 FPS pour la couche temporelle moyenne et de 7,5 FPS pour la couche temporelle la plus basse.
Pour les clients web et natifs, lors de la publication d'un flux de partage d'écran, le mode d'extensibilité est déterminé par une option définie lors de la publication (plus de détails dans la section Page vidéo évolutive). S'il est désactivé, le flux utilisera le mode L1T1, offrant une seule couche spatiale et temporelle (pas d'extensibilité). Cependant, lorsqu'il est activé, le système choisit dynamiquement entre L1T1, L2T1 ou L3T1 en fonction de la bande passante estimée entre l'éditeur et le routeur vidéo de Vonage, ainsi que de la résolution du flux de partage d'écran.
Simulcast (utilisé dans VP8) vs SVC (utilisé dans VP9)
Dans la diffusion simultanée (utilisée avec VP8), l'éditeur envoie plusieurs flux vidéo indépendants, chacun composé de différentes couches temporelles avec des résolutions et des débits binaires variables, au serveur multimédia. Ces couches temporelles encodées au sein de flux multiples permettent au serveur de sélectionner dynamiquement le flux et la couche les plus appropriés pour chaque abonné en fonction des conditions du réseau. Bien que 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 du même flux pour s'adapter à différentes conditions.
En revanche, le SVC (Scalable Video Coding), tel qu'il est pris en charge par le VP9, intègre plusieurs qualités spatiales et temporelles dans un seul flux. Le serveur média peut alors extraire et transmettre la couche appropriée à chaque abonné sans que l'éditeur n'ait à envoyer plusieurs flux. Le SVC est donc 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 la fonctionnalité en sélectionnant VP9 comme codec vidéo préféré en l'activant dans les paramètres de l'application par le biais de l'option Tableau de bord Vonage.
- Pour les sessions relayées, le SVC est désactivé.
- Pour les sessions routées, le SVC est automatiquement activé.
Notes sur l'archivage
Notre plateforme propose deux modes d'archivage : Archives composées et Archives individuelles, qui continueront à fonctionner si vous sélectionnez VP9 comme codec préféré. Dans les archives composées, les enregistrements sont stockés sous forme de fichiers MP4 composés, avec une vidéo H.264 et un son AAC, ce qui permet d'obtenir une sortie unique et finalisée. En revanche, les archives individuelles stockent les médias de chaque participant séparément sous forme de flux WebM, avec la vidéo VP9 SVC (Scalable Video Coding).
La prise en charge du VP9 SVC par les lecteurs commerciaux et open-source peut varier en fonction de la version et de l'implémentation spécifique. Par exemple, lors de la lecture d'archives individuelles, tous les lecteurs ne peuvent pas gérer correctement les flux codé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
En outre, si vous devez convertir un fichier WebM codé SVC en un flux VP8 standard sans SVC (pour une plus grande compatibilité), 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 peut être lue dans des lecteurs qui ne prennent pas totalement en charge le VP9 et/ou le SVC.
En outre, 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
Questions fréquemment posées
Quel est l'état de la compatibilité avec le navigateur VP9 ?
À partir de 2024, VP9 est entièrement pris en charge par tous les principaux navigateurs. Cela inclut Google Chrome, Firefox, Microsoft Edge, Samsung Internet, Opera et WebView Android, qui offrent une compatibilité VP9 complète depuis 2016 environ. Safari 15+ d'Apple et WebView sur iOS 15+ prennent en charge VP9.
Quels sont les appareils qui prennent en charge le VP9 ?
Depuis 2025, la plupart des appareils modernes prennent en charge VP9 pour les services WebRTC. Il s'agit notamment des ordinateurs de bureau, des ordinateurs portables et des appareils mobiles utilisant des versions récentes des principaux navigateurs tels que Google Chrome, Firefox, Microsoft Edge, Opera, Samsung Internet, WebView Android, ainsi que Safari et WebView sur iOS (à partir de la version 15). Bien que ces navigateurs puissent effectuer le codage vidéo par le biais du matériel, la prise en charge matérielle du codage et du décodage n'est pas aussi omniprésente. Par exemple, même si le matériel est capable d'encoder et de décoder VP9, nos SDK natifs utiliseront le codage vidéo logiciel pour VP9.
D'autre part, la prise en charge matérielle et logicielle du SVC n'est pas aussi omniprésente.
Remarque : VP9 est pris en charge par Firefox, mais pas SVC.
Quels sont les dispositifs recommandés ?
VP9 offre une compression vidéo améliorée par rapport à VP8, mais en contrepartie, la charge du processeur est plus élevée. Les modèles d'appareils modernes de grandes marques (par exemple, Apple iPhone ; Google Pixel ; Samung Galaxy, etc.) devraient fonctionner correctement.
L'API du processeur média de Vonage est une autre fonction qui présente des contraintes similaires pour le processeur. On peut s'attendre à ce que les appareils qui répondent à ces exigences gèrent bien VP9.
Appareils recommandés par plate-forme :
- Appareils recommandés pour Android
- Appareils recommandés pour iOS
- Dispositifs recommandés par le web
Quelles versions du Client SDK puis-je utiliser ?
Ce qui est indiqué dans le page codecs s'applique. Cependant, la prise en charge complète des formats VP9 et SVC, avec les améliorations développées pendant la phase d'accès anticipé, est disponible à partir de la version 2.29. Si vous ne pouvez pas effectuer la mise à niveau, la prise en charge VP9 et SVC de base commence à partir de la version 2.27 du SDK pour les clients Web et natifs.
Que se passe-t-il si un navigateur/SDK/appareil ne prend pas en charge VP9 ?
S'il s'agit d'un éditeur, il reviendra au VP8. S'il s'agit d'un abonné, il ne pourra pas s'abonner à la vidéo et ne recevra que de l'audio.
Que se passe-t-il si un navigateur/SDK/appareil prend en charge VP9 mais pas SVC ?
Pour les éditeurs et les abonnés, VP9 sera négocié, mais sans la prise en charge de l'évolutivité. Le point final utilisera, de manière transparente, VP9 sans SVC.
Comment contrôler le codec dans une session ?
Comme pour tout autre codec, l'inspecteur vidéo 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 ligne tracée pour voir le codec utilisé.
Comment puis-je savoir quel codec un point final utilise ?
Les SDK fournissent des méthodes pour récupérer RTCStatsReport pour chaque flux, qui comprendra le codec audio et vidéo utilisé. Pour voir des exemples de code, jetez un coup d'œil à la page Manuel de référence de l'abonné ou le Manuel de référence de l'éditeur pour JS.
Pour Linux, vous pouvez trouver des informations supplémentaires ici.