Оптимизация потокового видео с помощью протокола DASH

Оптимизация потокового видео с помощью протокола DASH

3 мая 2023 г.

Протокол DASH (Dynamic Adaptive Streaming over HTTP) – это все более популярная технология потоковой передачи видео, которая в последние годы выходит на первый план. Он предлагает гибкое и эффективное решение для доставки мультимедийного контента через Интернет, позволяя поставщикам контента оптимизировать доставку своего контента на широкий спектр устройств с различными сетевыми условиями.

:::информация Отказ от ответственности: эта статья была отредактирована для улучшения грамматики и ясности с использованием инструмента искусственного интеллекта для перефразирования.

:::

DASH был разработан Группой экспертов по движущимся изображениям (MPEG) для замены стандарта HTTP Live Streaming (HLS). Это очень универсальное и адаптивное решение для потоковой передачи видео, поскольку оно работает с любым видеокодеком, типом контейнера или сервером потоковой передачи и используется OTT.

Одной из самых сильных сторон DASH является его способность мгновенно приспосабливаться к изменяющимся сетевым условиям. Он делает это, разрезая видео на короткие фрагменты, часто от 2 до 10 секунд. Эти фрагменты кодируются с несколькими уровнями качества, чтобы клиент мог выбрать наиболее подходящий в зависимости от таких критериев, как пропускная способность, возможности устройства, размер экрана и личные предпочтения, тогда как ранее применялись некоторые концепции отслеживания пропускной способности, и OTT пытается достичь некоторых решений с помощью это.

DASH использует файл манифеста, обычно это файл XML. , чтобы описать доступные фрагменты видео и их качество. Файл манифеста может также включать метаданные, такие как скрытые титры, альтернативные звуковые дорожки и аудио- и видеокодеки. Клиентское приложение учитывает эти данные при выборе фрагментов для воспроизведения и при переключении между настройками качества.

Ключевым преимуществом DASH является то, что он работает с различными серверами потоковой передачи и сетями доставки контента (CDN). Распространение контента по многочисленным серверам и CDN улучшает доступность, масштабируемость и производительность для поставщиков контента. DASH является гибким и может использоваться как для прямой трансляции, так и для распространения видео по запросу благодаря поддержке расширенных функций, таких как шифрование, безопасность контента и управление цифровыми правами (DRM).

DASH поддерживается широким спектром устройств и платформ, таких как веб-браузеры, мобильные устройства, смарт-телевизоры и игровые приставки. Кроме того, он поддерживается большинством основных платформ потокового видео и сетей доставки контента, что делает его популярным вариантом как для небольших, так и для крупных приложений потокового видео.

Потенциальным недостатком DASH является его сложность, которая могут затруднить установку и настройку. Для достижения оптимальной производительности и взаимодействия с пользователем необходимо тщательное планирование и оптимизация. Тем не менее многие поставщики контента и потоковые платформы разработали инструменты и службы, облегчающие процесс внедрения DASH.

В заключение следует отметить, что протокол потоковой передачи DASH является очень гибким и универсальным решением для потоковой передачи видео, предлагая адаптацию в реальном времени к изменяющимся условиям сети, а также поддержку широкого спектра устройств и платформ.

Его открытый стандарт и поддержка нескольких серверов и CDN делают его популярным выбором для приложений любого размера, которые передают видео. Однако для достижения оптимальной производительности и взаимодействия с пользователем его сложность требует тщательного планирования и оптимизации.

Вот пример файла манифеста DASH в формате XML:

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-main:2011">
  <Period start="PT0S">
    <AdaptationSet mimeType="video/mp4" segmentAlignment="true" startWithSAP="1">
      <Representation bandwidth="540000" codecs="avc1.4d401f" height="360" width="640">
        <SegmentTemplate media="$RepresentationID$/$Number$.mp4" initialization="$RepresentationID$/init.mp4" timescale="90000" duration="900000" startNumber="1" />
      </Representation>
      <Representation bandwidth="1080000" codecs="avc1.4d401f" height="540" width="960">
        <SegmentTemplate media="$RepresentationID$/$Number$.mp4" initialization="$RepresentationID$/init.mp4" timescale="90000" duration="900000" startNumber="1" />
      </Representation>
      <Representation bandwidth="2160000" codecs="avc1.4d401f" height="720" width="1280">
        <SegmentTemplate media="$RepresentationID$/$Number$.mp4" initialization="$RepresentationID$/init.mp4" timescale="90000" duration="900000" startNumber="1" />
      </Representation>
    </AdaptationSet>
    <AdaptationSet mimeType="audio/mp4" segmentAlignment="true" startWithSAP="1">
      <Representation bandwidth="128000" codecs="mp4a.40.2" audioSamplingRate="44100">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
        <SegmentTemplate media="$RepresentationID$/$Number$.m4a" initialization="$RepresentationID$/init.mp4" timescale="44100" duration="220500" startNumber="1" />
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

В этом файле манифеста определены два разных набора модификаций; один для видео, а другой для аудио. Каждый адаптационный набор имеет по крайней мере одно, а часто и несколько представлений, каждое из которых имеет разную степень совершенства. Шаблон URL для получения отдельных видео- и аудиосегментов задается элементом SegmentTemplate. Кроме того, URL-адрес инициализации, указанный этим элементом, используется для доступа к сегменту инициализации.

Поддержка скрытых титров в DASH

Скрытые титры – это тип субтитров, основанный на тексте и синхронизированный с видеоконтентом. DASH может облегчить доставку скрытых субтитров. Существует множество различных протоколов, которые можно использовать для предоставления скрытых титров, включая WebVTT, TTML и CEA-608. Файл манифеста DASH может содержать дополнительные наборы AdaptationSet для различных дорожек скрытых субтитров. Каждый из этих наборов AdaptationSet может иметь собственный шаблон URL-адреса, который позволяет пользователям получать доступ к частям скрытых субтитров.

Иллюстрацию закрытого заголовка AdaptationSet можно увидеть, например, в файле манифеста DASH, представленном следующим фрагментом кода XML:

<AdaptationSet mimeType="application/ttml+xml" lang="en-US">
  <Representation bandwidth="128000" codecs="ttml" id="cc1">
    <SegmentTemplate media="cc1/$Number$.ttml" initialization="cc1/init.mp4" timescale="1000" duration="2000" startNumber="1"/>
  </Representation>
</AdaptationSet>

Этот AdaptationSet описывает параметры для записи субтитров, использующей формат файла TTML и предназначенной для английского (США) языка. Что касается дорожки субтитров, пропускная способность, кодеки и шаблон раздела определяются элементом Представление.

Поддержка миниатюр в DASH:

Доставка уменьшенных изображений также поддерживается DASH. Эскизы изображений — это миниатюрные изображения для предварительного просмотра, которые могут быть представлены либо до, либо во время воспроизведения видео. У вас есть возможность предоставлять миниатюры в виде отдельных файлов изображений или в качестве составной части самих видеосегментов. Файл манифеста DASH может содержать дополнительные представления для различных дорожек миниатюр, каждая из которых имеет собственный шаблон URL для извлечения сегментов миниатюр.

Иллюстрацию миниатюрного представления в файле манифеста DASH можно увидеть, например, во фрагменте кода XML, представленном ниже:

<AdaptationSet mimeType="video/mp4" contentType="video" segmentAlignment="true" startWithSAP="1">
  <Representation bandwidth="150000" codecs="avc1.42C015" id="thumb">
    <SegmentTemplate media="thumb/$Number$.jpg" initialization="thumb/init.mp4" timescale="1000" duration="2000" startNumber="1"/>
  </Representation>
</AdaptationSet>

Формат файла JPEG используется для компонента эскиза, указанного этим представлением. URL-адрес инициализации и шаблон URL-адреса сегмента эскиза задаются элементом SegmentTemplate. Шаблон URL-адреса сегмента эскиза используется для доступа к сегменту эскиза, а URL-адрес сегмента инициализации используется для доступа к сегменту инициализации.

DASH позволяет доставлять скрытые титры и миниатюры, которые могут улучшить общее впечатление от просмотра, а также предоставить дополнительный контекст и информацию, связанную с видеоконтентом. Файл манифеста DASH может содержать дополнительные AdaptationSets и представления для различных дорожек подписей и эскизов, каждая из которых может иметь собственный шаблон URL для доступа к соответствующим частям.


:::информация Изображение для этой статьи было создано с помощью Kadinsky v2.

Подсказка: проиллюстрируйте видеопоток.

:::


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE