Фильтрация манифестов с помощью динамического упаковщика
Предупреждение
Поддержка Служб мультимедиа Azure будет прекращена 30 июня 2024 г. Дополнительные сведения см. в руководстве по прекращению поддержки AMS.
При передаче потокового содержимого с адаптивной скоростью на устройства иногда бывает нужно опубликовать несколько версий манифеста, предназначенных для функциональности конкретных устройств или различных вариантов доступной полосы пропускания сети. Динамический упаковщик позволяет указывать фильтры, с помощью которых можно отфильтровывать определенные кодеки, разрешения, скорости и сочетания звуковых дорожек в режиме реального времени. Фильтрация устраняет необходимость создания нескольких копий. Нужно лишь опубликовать новый URL-адрес с конкретным набором фильтров, настроенным для ваших целевых устройств (iOS, Android, SmartTV или браузеров) и возможностей сети (конфигурации с высокой пропускной способностью, мобильные сети или конфигурации с низкой пропускной способностью). В таком случае клиенты могут управлять потоковой передачей вашего содержимого посредством строки запроса (указывая доступные фильтры активов или фильтры учетных записей), а также использовать фильтры для потоковой передачи отдельных частей потока.
В некоторых сценариях доставки бывает нужно гарантировать, что у клиента не будет доступа к конкретным дорожкам. Допустим, что вы не хотите публиковать манифест, содержащий дорожки в качестве HD, для определенного уровня подписчиков. Или, возможно, вы хотите убрать определенные дорожки потоковой передачи с переменной скоростью, чтобы уменьшить стоимость доставки на конкретные устройства, которые не смогут воспользоваться преимуществами этих дополнительных дорожек. В таком случае можно связать список предварительно созданных фильтров с указателем потоковой передачи при его создании. Тогда клиенты не смогут управлять тем, как происходит потоковая передача содержимого, поскольку она определяется указателем потоковой передачи.
Можно сочетать фильтрацию с помощью указания фильтров для указателя потоковой передачи и дополнительных фильтров для конкретных устройств, которые клиент указывает в URL-адресе. Это сочетание полезно для ограничения дополнительных дорожек, таких как метаданные или потоки событий, языки аудиодорожек или описательные звуковые дорожки.
Такая возможность указывать различные фильтры в потоке предоставляет мощное решение для работы с динамическими манифестами, предназначенное для сценариев с несколькими одновременными вариантами использования на целевых устройствах. В этом разделе объясняются понятия, связанные с динамическими манифестами, и приводятся примеры сценариев, в которых можно использовать эту функцию.
Примечание
Динамические манифесты не меняют актив и его манифест по умолчанию.
Общие сведения о манифестах
Службы мультимедиа Azure поддерживают протоколы HLS, MPEG DASH и Smooth Streaming. В рамках динамической упаковки манифесты клиента потоковой передачи (главный список воспроизведения HLS, описание представления мультимедиа DASH [MPD] и Smooth Streaming) создаются динамически на основе селектора формата в URL-адресе. Дополнительные сведения см. в описании протоколов доставки в статье Общий рабочий процесс по запросу.
Получение и просмотр файлов манифестов
Вы указываете список условий для фильтрации свойств дорожек с учетом того, какие дорожки вашего потока (прямой трансляции или видео по запросу [VOD]) следует включить в динамически создаваемый манифест. Чтобы получить и просмотреть свойства дорожек, необходимо сначала загрузить манифест Smooth Streaming.
Отслеживание скорости видеопотока
Для отслеживания скорости видеопотока можно использовать страницу с демонстрацией Проигрывателя мультимедиа Azure. Диагностические сведения отображаются на вкладке Диагностика демонстрационной страницы:
Примеры: URL-адреса с фильтрами в строке запроса
Фильтры можно применять к протоколам потоковой передачи с переменой скоростью: HLS, MPEG-DASH и Smooth Streaming. В представленной ниже таблице приводятся некоторые примеры URL-адресов с фильтрами.
Протокол | Пример |
---|---|
HLS | https://amsv3account-usw22.streaming.media.azure.net/fecebb23-46f6-490d-8b70-203e86b0df58/bigbuckbunny.ism/manifest(format=m3u8-aapl,filter=myAccountFilter) |
MPEG DASH | https://amsv3account-usw22.streaming.media.azure.net/fecebb23-46f6-490d-8b70-203e86b0df58/bigbuckbunny.ism/manifest(format=mpd-time-csf,filter=myAssetFilter) |
Smooth Streaming | https://amsv3account-usw22.streaming.media.azure.net/fecebb23-46f6-490d-8b70-203e86b0df58/bigbuckbunny.ism/manifest(filter=myAssetFilter) |
Фильтрация представлений
По выбору можно закодировать актив в несколько профилей кодирования (H.264 Baseline, H.264 High, AACL, AACH, Dolby Digital Plus) и с несколькими значениями скорости потока и соответственно качества. Однако не все клиентские устройства будут поддерживать все профили и скорости потока вашего актива. Например, старые устройства Android поддерживают только профиль H.264 Baseline+AACL. Отправка высокоскоростного потока на устройство, которое не способно реализовать его преимущества, приводит к трате пропускной способности и вычислительных ресурсов устройства. Такое устройство должно декодировать всю заданную информацию только для того, чтобы потом уменьшить разрешение выводимого изображения.
С помощью динамического манифеста можно создавать профили устройств (например, мобильных устройств, консолей, или HD/SD), включая в них дорожки и варианты качества, которые следует сделать частью каждого из профилей. Это называется фильтрацией представлений. Пример фильтрации представлений приведен на следующей схеме.
В верхней части следующей схемы показан манифест HLS для актива без фильтров. (Содержит все семь представлений.) В нижнем левом углу на схеме показан манифест HLS, к которому применен фильтр под именем "ott". Фильтр "ott" предписывает удалить все варианты скорости потока ниже 1 Мбит/с, так что два самых низких уровня качества были исключены. В правом нижнем углу на схеме показан манифест HLS, к которому был применен фильтр с именем "mobile". Фильтр "mobile" предписывает удалить представления с разрешением больше 720p, так что два представления с разрешением 1080p были исключены.
Удаление языковых дорожек
Активы могут содержать аудиодорожки на нескольких языках, например на английском, испанском, французском и т. д. Как правило, пакет SDK проигрывателя управляет выбором аудиодорожки по умолчанию и доступными по выбору пользователя аудиодорожками.
Разрабатывать такие пакеты SDK для проигрывателей сложно, поскольку они требуют разных реализаций для различных платформ проигрывателей на конкретных устройствах. На некоторых платформах API проигрывателя ограничены и не содержат функцию выбора аудиодорожки, из-за чего пользователи не могут изменять аудиодорожку, установленную по умолчанию, или выбрать другую. Используя фильтры активов, можно управлять работой устройств, создавая фильтры, которые будут включать только требуемые языки аудиодорожек.
Обрезка начала актива
При большинстве событий потоковой трансляции в реальном времени операторы проводят процедуры тестирования до фактического события. Например, перед началом события они могут включить баннер: "Программа начнется вскоре".
При архивировании программы данные проверок и заставок также будут архивированы и включены в представление. Однако эту информацию не следует отображать клиентам. С помощью динамического манифеста можно создать фильтр времени начала и удалить ненужные данные из манифеста.
Создание субклипов (представлений) из текущего архива
Многие текущие события являются длительными, и их текущий архив может включать в себя несколько событий. После окончания текущего события вещателям может потребоваться разбить текущий архив на логические последовательности начала и остановки программ.
Можно опубликовать эти виртуальные программы отдельно, без последующей обработки текущего архива и без создания отдельных активов (что не позволит воспользоваться преимуществами существующих кэшированных фрагментов в CDN). Примерами таких виртуальных программ являются четверти при игре в американский футбол или баскетбол, иннинги в бейсболе или отдельные события любой программы о спорте.
С помощью динамического манифеста можно создавать фильтры с указанием времени начала и окончания, а также создавать виртуальные представления поверх текущего архива.
Вот отфильтрованный актив:
Настройка окна презентации (DVR)
В настоящее время Службы мультимедиа Azure предлагают циклическую архивацию, в которой длительность может быть настроена от 1 минуты до 25 часов. Фильтрация манифеста позволяет создать скользящее окно DVR поверх архива, без удаления медиаданных. Есть множество сценариев, где вещателям требуется предоставить ограниченное окно DVR, которое перемещается вместе с текущей границей, и в то же время поддерживать более крупное окно архивации. Вещателю может понадобиться использовать данные, находящиеся за пределами окна DVR, для выделения клипов, или же предоставлять разные окна DVR для различных устройств. Например, большинство мобильных устройств не обрабатывает большие окна DVR (для мобильных устройств можно установить окно DVR продолжительностью в две минуты, а для настольных клиентов — один час).
Настройка LiveBackoff (динамической позиции)
Фильтрация манифеста позволяет удалить несколько секунд с динамической границы текущей программы. Она позволяет вещателям просматривать представление в точке предварительной публикации и создавать точки вставки рекламы до того, как потоковая передача поступит зрителям (резерв по времени составляет 30 секунд). Затем вещатели могут передавать такую рекламу на клиентские платформы, располагая временем на получение и обработку этой информации до появления возможности показа рекламы.
Помимо поддержки рекламы, параметр динамической позиции можно использовать для корректировки позиции показа зрителям, так что даже если клиенты переместятся и выйдут из зоны покрытия, они все равно смогут получать фрагменты с сервера. Таким образом на клиентах не будут возникать ошибки HTTP 404 или 412.
Объединение нескольких правил в одном фильтре
В одном фильтре можно объединить несколько правил фильтрации. В качестве примера можно определить "правило диапазона" для удаления заставок из текущего архива, а также для фильтрации доступных скоростей потока. При применении нескольких правил фильтрации конечным результатом является объединение по пересечению всех правил.
Объединение нескольких фильтров (сложение фильтров)
Кроме того, вы можете объединять несколько фильтров в одном URL-адресе. В следующем сценарии показано, для чего могут потребоваться подобные фильтры:
- При необходимости фильтровать качество видео для мобильных устройств, таких как, Android или iPad (для ограничения качества видео). Чтобы удалить содержимое нежелательного качества, создается фильтр учетной записи, который подходит для профилей устройств. Фильтры учетных записей можно использовать для всех активов в одной учетной записи Служб мультимедиа без каких-либо дополнительных связей.
- При необходимости обрезать время начала и окончания ресурс-контейнера. Чтобы выполнить обрезку, создайте фильтр активов и задайте время начала и окончания.
- Необходимо объединить оба этих фильтра. Без объединения пришлось бы добавить в фильтр обрезки фильтрацию по качеству, что усложнило бы использование фильтров.
Для объединения фильтров укажите имена фильтров в URL-адресе манифеста в формате с разделителем точка с запятой. Предположим, у вас есть фильтр качества с именем MyMobileDevice и фильтр MyStartTime для выбора конкретного времени начала. Вы можете объединить до трех фильтров.
Рекомендации и ограничения
Для фильтра VOD не следует задавать значения forceEndTimestamp, presentationWindowDuration или liveBackoffDuration. Они используются только для сценариев динамической фильтрации.
Динамический манифест работает в пределах GOP (по ключевым кадрам), поэтому обрезка производится с точностью GOP.
Одно и то же имя фильтра можно использовать и для фильтров учетных записей, и для фильтров активов. Фильтры активов имеют более высокий приоритет и переопределяют фильтры учетных записей.
При обновлении фильтра может понадобиться до 2 минут на обновление правил на конечной точке потоковой передачи. Если для предоставления содержимого использовались фильтры (и содержимое кэшировалось на прокси-серверах и в кэшах сети CDN), обновление этих фильтров может привести к сбою в проигрывателе. Рекомендуется очищать кэш после обновления фильтра. Если такой вариант невозможен, рассмотрите возможность использования другого фильтра.
Клиентам необходимо вручную загрузить манифест и получить точное значение отметки времени начала и шкалу времени.
- Чтобы определить свойства дорожек в активе, получите и просмотрите файл манифеста.
- Формула для установки свойств меток времени в фильтрах активов:
startTimestamp (метка времени начала) = <время начала в манифесте>+ <ожидаемое начальное время фильтра в секундах> * шкала времени
Справка и поддержка
Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов:
- ВОПРОСЫ И ОТВЕТЫ
-
Stack Overflow. Пометьте вопросы тегом
azure-media-services
. - @MSFTAzureMedia или используйте @AzureSupport , чтобы запросить поддержку.
- Отправьте запрос в службу поддержки через портал Azure.