- Se añadió oficialmente a FFmpeg un muxer WHIP (WebRTC-HTTP Ingestion Protocol), con soporte directo para streaming de ultra baja latencia de menos de 1 segundo
- En este commit se reorganizaron el nombre y la estructura del muxer WHIP, y se mejoraron los mensajes de error y logs de SSL/DTLS/RTC
- Se actualizaron parámetros clave del protocolo como curvas/perfiles DTLS, payload RTP e ICE STUN para alinearlos con las definiciones de Chrome, y los magic numbers se extrajeron a macros y funciones
- El handshake DTLS y el procesamiento de ICE se unificaron y optimizaron en una sola función, mejorando notablemente el rendimiento y la estabilidad
- Se corrigieron errores de transcodificación de audio y video (
h264_mp4toannexb, timestamp de OPUS, configuración de marcadores, etc.), aumentando la compatibilidad con entornos WebRTC estándar
- Se aclaró la dependencia de OpenSSL, de modo que WHIP solo se compila cuando hay soporte para DTLS
- Con solo FFmpeg, ahora es más fácil construir entornos de broadcasting y streams en tiempo real basados en WebRTC, aprovechando características de ultra baja latencia frente a protocolos legacy como RTMP
avformat/whip: se añade soporte para el muxer WHIP en FFmpeg
Resumen de los cambios principales
- Introducción oficial del muxer basado en WHIP Version 3, con reorganización de la nomenclatura y la estructura interna
- El contexto de logs y los mensajes de error de SSL, DTLS y RTC ahora son mucho más claros
- Los magic numbers hardcodeados se extrajeron a macros y funciones separadas para mejorar la mantenibilidad
- Se ajustaron elementos como la lista de curvas DTLS y los nombres de perfiles SRTP para alinearlos con los estándares de FFmpeg y OpenSSL
- El magic number de ICE STUN y los tipos de payload RTP se actualizaron para coincidir con el estándar del navegador Chrome
- Se resolvieron problemas de procesamiento multimedia como tamaño de frame de audio, conversión H.264 MP4→AnnexB y timestamps de OPUS
- La lógica del handshake DTLS y del procesamiento ICE se integró en una única función, facilitando su mantenimiento
- Se aclararon las condiciones de soporte DTLS basadas en OpenSSL, mejorando los errores de compilación y la compatibilidad
- Se unificó la estructura interna de TLS/DTLS en áreas como SRTP, callbacks BIO e inicialización de claves/certificados CA
- Se modificaron y agregaron 13 archivos en total, incluyendo la creación de
whip.c
Contexto y relevancia
- WHIP es un protocolo estándar basado en HTTP para la ingestión de streams sobre WebRTC, y es esencial para transmisiones en vivo de ultra baja latencia
- Hasta ahora, en FFmpeg la codificación y emisión por WebRTC requerían herramientas separadas o un relay complejo, pero con este merge ahora es posible emitir por WHIP con un solo comando de FFmpeg
- Esto marca un punto de inflexión técnico para conectar directamente con el ecosistema moderno de WebRTC en áreas como transmisiones en tiempo real, live commerce y videoconferencias
1 comentarios
Opiniones de Hacker News
--without-whippara excluirlo por completo del build si no se quiere; opinan que eso sería lo ideal../configure.--enable-muxer=whipy--enable-openssl.