Aujourd'hui, lorsque vous utilisez les Media Source Extensions (MSE) dans Chrome, il n'est pas possible de basculer entre un flux chiffré et un flux effacé. Cela n'est en réalité pas interdit par la spécification MSE. Cette limitation dépend principalement de la manière dont le pipeline multimédia est configuré pour prendre en charge les extensions multimédias chiffrées (EME).
MSE nécessite que les flux multimédias commencent par un segment d'initialisation qui inclut des informations telles que les données d'initialisation du codec et les informations de chiffrement. En général, le segment d'initialisation se trouve au début d'un fichier multimédia. Par conséquent, lorsque des contenus multimédias sont associés à un élément multimédia via un téléchargement ou un MSE, ils "fonctionnent tout simplement".
Le problème survient lorsque vous essayez de modifier les caractéristiques du média en cours de diffusion. La modification des caractéristiques multimédias nécessite la transmission d'un nouveau segment d'initialisation. Pour la plupart des caractéristiques, cela fonctionne. La lecture se poursuit. Les paramètres de chiffrement font exception à cette règle. Les paramètres de chiffrement du premier segment d'initialisation indiquent uniquement si les segments de flux peuvent être chiffrés, ce qui signifie que des segments multimédias clairs peuvent être insérés dans le flux. En conséquence, un flux non chiffré comprenant ne serait-ce qu'un seul segment chiffré nécessite que les informations de chiffrement soient incluses dans le segment d'initialisation. C'est pourquoi l'insertion d'annonces nécessite des solutions de contournement qui ne s'appliquent pas à d'autres plates-formes.
Tout cela change à partir de Chrome 58. Vous pouvez maintenant basculer entre chiffrement et non chiffré dans le même flux. Cela améliore la compatibilité en faisant correspondre le comportement existant dans Firefox et Edge.
Il y a quelques mises en garde. Tout d'abord, si vous prévoyez des segments chiffrés dans vos flux multimédias, vous devez définir les MediaKeys à l'avance. Comme précédemment, vous ne pouvez pas combiner les protocoles HTTP et HTTPS dans la même source.