- O FFmpeg agora adiciona oficialmente um muxer WHIP (WebRTC-HTTP Ingestion Protocol), com suporte direto a streaming de ultra baixa latência abaixo de 1 segundo
- Neste commit, a nomenclatura e a estrutura do muxer WHIP foram reorganizadas, e as mensagens de erro e logs de SSL/DTLS/RTC foram aprimorados
- Parâmetros centrais de protocolo, como curvas/perfis DTLS, payload RTP e ICE STUN, foram atualizados para corresponder às definições do Chrome, e os magic numbers foram extraídos para macros e funções
- O handshake DTLS e o processamento de ICE foram integrados e otimizados em uma única função, melhorando bastante desempenho e estabilidade
- Foram corrigidos bugs de transcodificação de áudio e vídeo (
h264_mp4toannexb, timestamp de OPUS, configuração de marcador etc.), aumentando a compatibilidade com ambientes WebRTC padrão
- A dependência de OpenSSL foi explicitada com mais clareza, de modo que o WHIP só é compilado quando há suporte a DTLS
- Com apenas o FFmpeg, fica mais fácil montar um ambiente de transmissão e streaming em tempo real baseado em WebRTC, aproveitando a característica de ultra baixa latência em comparação com protocolos legados como RTMP
avformat/whip: adicionado suporte ao muxer WHIP no FFmpeg
Resumo das principais mudanças
- Introdução oficial de um muxer baseado no WHIP Version 3, com reorganização da nomenclatura e da estrutura interna
- O contexto de logs e as mensagens de erro de SSL, DTLS e RTC ficaram bem mais claros
- Magic numbers antes hardcoded foram extraídos para macros e funções separadas, melhorando a manutenção
- Itens como a lista de curvas DTLS e nomes de perfis SRTP foram ajustados para seguir os padrões do FFmpeg e do OpenSSL
- O magic number do ICE STUN e os tipos de payload RTP foram atualizados para ficar alinhados ao padrão do navegador Chrome
- Foram resolvidos problemas no processamento de mídia, como tamanho de frame de áudio, conversão H.264 MP4→AnnexB e timestamp de OPUS
- A lógica de handshake DTLS e processamento de ICE foi unificada em uma única função, facilitando a manutenção
- As condições para suporte a DTLS baseado em OpenSSL ficaram mais claras, melhorando erros de build e compatibilidade
- Houve integração da estrutura interna de TLS/DTLS, incluindo SRTP, callbacks BIO e inicialização de chave/ certificado de CA
- Foram alterados e adicionados 13 arquivos no total, incluindo a criação do arquivo whip.c
Contexto e importância
- WHIP é um protocolo padrão baseado em HTTP para envio de streams com WebRTC, sendo essencial para transmissões ao vivo com ultra baixa latência
- Até agora, codificar e transmitir via WebRTC no FFmpeg exigia ferramentas separadas ou uma intermediação complexa, mas com este merge passa a ser possível fazer ingest via WHIP com um único comando do FFmpeg
- Isso marca um ponto de virada técnico para integração direta com o ecossistema WebRTC moderno em áreas como transmissão em tempo real, live commerce e videoconferência
1 comentários
Opiniões do Hacker News
--without-whippara remover isso totalmente do build se não for desejado, opinando que isso seria ideal../configure.--enable-muxer=whipe--enable-openssl.