Vamos atravessar os streams de mídia, Ray

Joe medley
Joe Medley

Atualmente, ao usar as extensões de origem de mídia (MSE, na sigla em inglês) no Chrome, não é possível alternar entre streams criptografados e claros. Na verdade, isso não é proibido pela especificação do MSE. Em vez disso, essa limitação está principalmente na forma como o pipeline de mídia é configurado para oferecer suporte às extensões de mídia criptografada (EME, na sigla em inglês).

O MSE exige que os streams de mídia comecem com um segmento de inicialização que inclua informações como dados de inicialização de codec e informações de criptografia. Normalmente, o segmento de inicialização está no início de um arquivo de mídia. Consequentemente, quando as mídias são anexadas a um elemento de mídia por download ou MSE, elas "simplesmente funcionam".

O problema ocorre quando você tenta mudar as características da mídia no meio da transmissão. Alterar as características da mídia requer a transmissão de um novo segmento de inicialização. Para a maioria das características, isso funciona. A reprodução continua. A exceção são as configurações de criptografia. As configurações de criptografia do primeiro segmento de inicialização indicam apenas se os segmentos de stream podem ser criptografados, o que significa que segmentos de mídia limpos podem ser inseridos no stream. Como consequência, um stream não criptografado com até mesmo um único segmento criptografado exige que as informações de criptografia sejam incluídas no segmento de inicialização. Por isso, a inserção de anúncios requer soluções alternativas que não se aplicam a outras plataformas.

A partir do Chrome 58, tudo isso muda. Agora é possível alternar entre criptografados e não criptografados no mesmo stream. Isso melhora a compatibilidade ao corresponder ao comportamento que já existe no Firefox e no Edge.

Isso tem algumas ressalvas. Primeiro, se você antecipar algum segmento criptografado nos seus streamings de mídia, defina os MediaKeys antecipadamente. Assim como antes, não é possível misturar HTTP e HTTPS na mesma origem.