- FFmpeg intègre officiellement un muxer WHIP (WebRTC-HTTP Ingestion Protocol), avec prise en charge directe du streaming ultra-faible latence à moins d’une seconde
- Ce commit revoit le nommage et la structure du muxer WHIP, et améliore les messages d’erreur et les logs SSL/DTLS/RTC
- Des paramètres de protocole clés comme les courbes/profils DTLS, la charge utile RTP, ICE STUN, etc. sont mis à jour pour correspondre aux définitions de Chrome, et les magic numbers sont extraits en macros et fonctions
- Le handshake DTLS et le traitement ICE sont unifiés et optimisés dans une seule fonction, avec une nette amélioration des performances et de la stabilité
- Des bugs de transcodage audio et vidéo (
h264_mp4toannexb, timestamp OPUS, réglage des marqueurs, etc.) sont corrigés, améliorant la compatibilité avec les environnements WebRTC standard
- La dépendance à OpenSSL est clarifiée, afin que WHIP ne soit compilé qu’en présence du support DTLS
- Avec FFmpeg seul, il devient plus simple de mettre en place des environnements de diffusion et de flux en temps réel basés sur WebRTC, en tirant parti de la très faible latence par rapport aux protocoles legacy comme RTMP
avformat/whip : ajout de la prise en charge du muxer WHIP dans FFmpeg
Résumé des principaux changements
- Introduction officielle d’un muxer basé sur WHIP Version 3, avec réorganisation du nommage et de la structure interne
- Les contextes de logs et messages d’erreur de SSL, DTLS et RTC deviennent nettement plus clairs
- Les magic numbers codés en dur sont extraits en macros et fonctions dédiées pour renforcer la maintenabilité
- La liste des courbes DTLS, les noms de profils SRTP et d’autres éléments sont corrigés pour s’aligner sur les standards de FFmpeg et OpenSSL
- Les magic numbers ICE STUN et les types de charge utile RTP sont mis à jour pour correspondre au standard du navigateur Chrome
- Résolution de problèmes de traitement média liés à la taille des trames audio, à la conversion H.264 MP4→AnnexB et aux timestamps OPUS
- La logique du handshake DTLS et du traitement ICE est unifiée dans une seule fonction, facilitant la maintenance
- Les conditions de prise en charge de DTLS via OpenSSL sont clarifiées, avec des améliorations sur les erreurs de build et la compatibilité
- Intégration des structures internes TLS/DTLS autour de SRTP, des callbacks BIO et de l’initialisation des clés/certificats CA
- 13 fichiers au total sont modifiés ou ajoutés, dont la création de
whip.c
Contexte et portée
- WHIP est un protocole standard HTTP destiné à l’ingestion de flux basés sur WebRTC, indispensable pour la diffusion live à très faible latence
- Jusqu’ici, l’encodage et l’émission WebRTC avec FFmpeg nécessitaient des outils séparés ou une chaîne de relais complexe ; avec cette fusion, une commande FFmpeg unique suffit pour émettre via WHIP
- Cela marque un tournant technique permettant une interopérabilité directe avec l’écosystème WebRTC moderne dans des domaines variés comme le streaming en direct, le live commerce et la visioconférence
1 commentaires
Avis sur Hacker News
--without-whippour l’exclure complètement du build si on n’en veut pas ? Ce serait l’idéal../configure.--enable-muxer=whipet--enable-openssl.