Estou trabalhando em um site que precisa transmitir vídeo ao vivo para os usuários e, como tal, tive que pensar no triste estado da atual tecnologia de transmissão de vídeo baseada em navegador. As soluções mais populares para transmissão ao vivo atualmente têm problemas de compatibilidade; O RTMP requer Flash, o HLS é suportado apenas de forma nativa no Safari e Chrome para Android, o DASH não é suportado de maneira nativa em nenhum lugar e o uso do dash.js requer Extensões de fonte de mídia , que ainda não são amplamente suportadas.
Isso leva a uma pergunta que me parece óbvia: é possível usar o download progressivo simples como uma alternativa a protocolos como HLS, RTMP e DASH que requerem suporte ao navegador ou plug-ins?
A idéia de usar o download progressivo para transmitir mídia ao vivo não é inédita; as pessoas já fazem isso por áudio. Ferramentas como o liveCaster permitem transmitir áudio MP3 ao vivo através de uma única resposta HTTP progressiva sem a necessidade de um arquivo MP3 pré-gravado, e bibliotecas como o AmplitudeJS se esforçaram para adicionar recursos relacionados a esse tipo de transmissão de áudio ao vivo .
No entanto, não vi nenhum exemplo dessa técnica sendo usado na natureza para vídeo , e não sei dizer por quê. Parece que isso removeria uma camada de problemas de compatibilidade complicados e difíceis do lado do navegador por uma troca relativamente pequena. (E a compatibilidade ainda é um grande problema para a transmissão ao vivo, mesmo quando os profissionais o fazem; se eu tentar assistir a um vídeo ao vivo no iPlayer da BBC no Firefox, isso me dá uma mensagem de erro dizendo para instalar o Flash.) No entanto, ninguém está usando essa técnica, e nunca vi ninguém mencionar a idéia além de mim.
Por quê? Existe uma limitação fundamental que eu não vejo que tornaria impossível apenas transmitir um arquivo de vídeo como um MP4 por download progressivo à medida que ele está sendo gerado, e reproduzi-lo em um <video>
elemento durante o download?