Сегодня при использовании Media Source Extensions (MSE) в Chrome невозможно переключаться между зашифрованными и чистыми потоками. На самом деле это не запрещено спецификацией MSE. Скорее, это ограничение в основном связано с настройкой медиаконвейера для поддержки расширений зашифрованного мультимедиа (EME) .
MSE требует, чтобы медиапотоки начинались с сегмента инициализации, который включает в себя такую информацию, как данные инициализации кодека и информацию о шифровании. Обычно сегмент инициализации находится в начале медиафайла. Следовательно, когда медиа-файлы прикрепляются к медиа-элементу посредством загрузки или MSE, они «просто работают».
Проблема возникает, когда вы пытаетесь изменить характеристики мультимедиа в середине потока. Изменение характеристик носителя требует передачи нового сегмента инициализации. Для большинства характеристик это работает. Воспроизведение продолжается. Исключение составляют настройки шифрования. Настройки шифрования из первого сегмента инициализации только сигнализируют о том, могут ли сегменты потока быть зашифрованы, то есть в поток можно вставлять чистые медиасегменты. Следствием этого является то, что незашифрованный поток даже с одним зашифрованным сегментом требует, чтобы информация о шифровании была включена в сегмент инициализации. По этой причине для вставки рекламы требуются обходные пути, которые неприменимы к другим платформам.
Начиная с Chrome 58, все это меняется. Теперь вы можете переключаться между зашифрованным и незашифрованным потоком в одном потоке. Это улучшает совместимость за счет соответствия поведению, которое уже существует в Firefox и Edge.
Здесь есть несколько предостережений. Во-первых, если вы ожидаете наличие зашифрованных сегментов в ваших медиапотоках, вы должны заранее настроить MediaKeys . Как и раньше, вы не можете смешивать HTTP и HTTPS в одном источнике.