Работа с каналами, получающими динамические многоскоростные потоки данных от локальных кодировщиков

media services logo


Примечание

С 12 мая 2018 г. динамические каналы больше не будут поддерживать протокол приема транспортного потока RTP/MPEG-2. Выполните миграцию из RTP/MPEG-2 в протокол приема RTMP или фрагментированный протокол MP4 (Smooth Streaming).

Обзор

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

  • Локальный динамический кодировщик передает содержимое в формате RTMP или формате потока Smooth Streaming (фрагментированный MP4) с несколькими скоростями в канал, для которого не включена поддержка кодирования в реальном времени с помощью служб мультимедиа. Полученные потоки передаются через каналы без дальнейшей обработки. Этот способ называется сквозной передачей. Динамический кодировщик может также передавать односкоростной поток в канал, для которого не включено кодирование в реальном времени, но это не рекомендуется. При получении запроса службы мультимедиа предоставляют потоки запрашивающим клиентам.

    Примечание

    Использование сквозной передачи является наиболее экономичным способом потоковой передачи в реальном времени.

  • Локальный динамический кодировщик передает односкоростной поток в канал, который может осуществлять кодирование в реальном времени с помощью Служб мультимедиа, в одном из следующих форматов: RTMP или Smooth Streaming (фрагментированный формат MP4). Затем канал кодирует входящий односкоростной поток в реальном времени в многоскоростной (адаптивный) видеопоток. При получении запроса службы мультимедиа предоставляют потоки запрашивающим клиентам.

Начиная с выпуска 2.10 служб мультимедиа при создании канала можно указать, как он должен принимать входной поток и должен ли он выполнять его кодирование в реальном времени. Имеются две возможности.

  • Сквозная передача. Выберите это значение, если собираетесь использовать локальный динамический кодировщик, который в качестве вывода будет использовать поток с несколькими скоростями (сквозной поток). В этом случае входящий поток передается на выход без кодирования. Таким образом каналы работали до выпуска 2.10. В этой статье приведены подробные сведения о работе с каналами именно этого типа.
  • Кодирование в реальном времени — выберите это значение, если собираетесь использовать службы мультимедиа для кодирования односкоростного динамического потока в поток с несколькими скоростями. Чтобы избежать непредвиденных расходов, не оставляйте канал кодирования в реальном времени в состоянии Работает. Рекомендуется сразу же прекращать работу канала после завершения потоковой передачи в реальном времени во избежание оплаты дополнительных часов. При получении запроса службы мультимедиа предоставляют потоки запрашивающим клиентам.

Примечание

В этой статье рассматриваются атрибуты каналов, которые не поддерживают кодирование в реальном времени. Сведения о работе с каналами, которые поддерживают кодирование в реальном времени, см. в статье Потоковая трансляция с использованием служб мультимедиа Azure для создания потоков с разными скоростями.

Сведения о рекомендуемых локальных кодировщиках см. в статье Рекомендуемые локальные кодировщики.

На следующей схеме показан рабочий процесс динамической потоковой передачи, использующий локальный динамический кодировщик для вывода потоков с разными скоростями RTMP или фрагментированного потока MP4 (Smooth Streaming).

Live workflow

Стандартный сценарий потоковой передачи в режиме реального времени

Далее описываются задачи, связанные с созданием распространенных приложений динамической потоковой передачи.

  1. Подключите видеокамеру к компьютеру. Запустите и настройте локальный динамический кодировщик, который выводит поток с разными скоростями RTMP или поток в формате "фрагментированный MP4" (Smooth Streaming). Дополнительные сведения см. в статье о поддержке протокола RTMP в службах мультимедиа Azure и о динамических кодировщиках.

    Это действие также можно выполнить после создания канала.

  2. Создайте и запустите канал.

  3. Получение входного URL-адреса канала.

    URL-адрес приема используется динамическим кодировщиком для отправки потока в канал.

  4. Получите URL-адрес предварительного просмотра канала.

    С его помощью можно убедиться в том, что канал надлежащим образом получает поток.

  5. Создайте программу.

    Если вы используете портал Azure, то при создании программы также создается ресурс-контейнер.

    Если вы используете пакет .NET SDK или REST, необходимо создать ресурс и указать его при создании программы.

  6. Опубликуйте ресурс, связанный с программой.

    Примечание

    При создании учетной записи служб мультимедиа Azure в нее добавляется конечная точка потоковой передачи по умолчанию в состоянии Остановлена. Конечная точка потоковой передачи, из которой нужно передавать содержимое потоком, должна находиться в состоянии Выполняется.

  7. Когда вы будете готовы начать потоковую передачу и архивацию, запустите программу.

  8. При необходимости динамическому кодировщику можно дать сигнал начать показ рекламы. Реклама вставляется в выходной поток.

  9. Чтобы остановить потоковую передачу и архивацию содержимого мероприятия, завершите работу программы.

  10. Удалите программу (и при необходимости ресурс).

Описание канала и связанных с ним компонентов

Конфигурации входа (приема) канала

Протокол входного потока

Службы мультимедиа поддерживают прием динамических каналов с использованием фрагментированного MP4 и RTMP с поддержкой разных скоростей в качестве потоковых протоколов.

Сведения о динамических кодировщиках RTMP см. в записи блога Azure Media Services RTMP Support and Live Encoders (Поддержка RTMP в службах мультимедиа Azure и динамические кодировщики).

URL-адреса (конечные точки) приема

Канал предоставляет входную конечную точку (URL-адрес приема), которая определяется в динамическом кодировщике, чтобы кодировщик мог передать потоки в каналы.

URL-адреса приема можно получить при создании канала. Для этого каналу не обязательно находиться в состоянии Выполняется. Чтобы начать передавать данные каналу, его нужно перевести в состояние Выполняется. После того как канал начинает принимать данные, можно просмотреть поток через URL-адрес предварительного просмотра.

Вы можете принимать динамический поток в формате "фрагментированный MP4" (Smooth Streaming) по TLS-подключению. Для приема по протоколу TLS измените URL-адрес приема на HTTPS. В настоящее время прием RTMP по протоколу TLS не поддерживается.

Интервал опорного кадра

При использовании локального динамического кодировщика для формирования потока с поддержкой нескольких скоростей интервал опорного кадра определяет длительность группы кадров (которая используется внешним кодировщиком). После того как канал получит входящий поток, вы можете предоставить динамический поток клиентским приложениям для воспроизведения в любом из следующих форматов: Smooth Streaming, динамическая адаптивная потоковая передача по протоколу HTTP (DASH) и HTTP Live Streaming (HLS). При динамической потоковой трансляции HLS всегда упаковывается динамически. По умолчанию службы мультимедиа автоматически вычисляют соотношение упаковки сегмента HLS (число фрагментов на сегмент) на основе интервала опорного кадра, полученного из динамического кодировщика.

В следующей таблице показано вычисление длительности сегментов.

Интервал опорного кадра Соотношение упаковки сегмента HLS (FragmentsPerSegment) Пример
Меньше или равно 3 секундам 3:1 Если значение KeyFrameInterval (или GOP) равно 2 секундам, соотношение упаковки сегмента HLS по умолчанию будет равно 3 к 1. Это приведет к созданию сегмента HLS длительностью 6 секунд.
3–5 секунд 2:1 Если значение KeyFrameInterval (или GOP) равно 4 секундам, соотношение упаковки сегмента HLS по умолчанию будет равно 2 к 1. Это приведет к созданию сегмента HLS длительностью 8 секунд.
Более 5 секунд 1:1 Если значение KeyFrameInterval (или GOP) равно 6 секундам, соотношение упаковки сегмента HLS по умолчанию будет равно 1 к 1. Это приведет к созданию сегмента HLS длительностью 6 секунд.

Можно изменить соотношение фрагментов на сегмент, настроив вывод канала и установив параметр FragmentsPerSegment в ChannelOutputHls.

Вы также можете изменить значение интервала опорного кадра, установив свойство KeyFrameInterval в ChannelInput. Если явно задать значение KeyFrameInterval, соотношение упаковки сегмента HLS, FragmentsPerSegment, вычисляется с помощью правил, описанных выше.

Если явно задать свойства KeyFrameInterval и FragmentsPerSegment, службы мультимедиа будут использовать значения, указанные пользователем.

Разрешенные IP-адреса

Вы можете определить IP-адреса, с которых разрешено публиковать видео в этом канале. Разрешенные IP-адреса можно указать следующим образом:

  • отдельный IP-адрес (например, 10.0.0.1);
  • диапазон IP-адресов, заданный с помощью IP-адреса и маски подсети CIDR (например,10.0.0.1/22);
  • диапазон IP-адресов, заданный с помощью IP-адреса и маски подсети в десятичной записи (например, 10.0.0.1(255.255.252.0)).

Если IP-адреса не указаны и правила не заданы, все IP-адреса будут блокироваться. Чтобы разрешить все IP-адреса, создайте правило и задайте адрес 0.0.0.0/0.

Предварительный просмотр канала

URL-адреса предварительного просмотра

Канал предоставляет конечную точку (URL-адрес) предварительного просмотра, с помощью которой можно проверить поток перед дальнейшей обработкой и доставкой.

Получить URL-адрес предварительного просмотра можно при создании канала. Для этого каналу не обязательно находиться в состоянии Выполняется. После запуска канала можно выполнить предварительный просмотр потока.

В настоящее время поток предварительного просмотра может доставляться только в формате фрагментированного MP4 (Smooth Streaming) вне зависимости от указанного входного типа. Для проверки потока Smooth Streaming можно использовать проигрыватель Smooth Streaming Health Monitor. Также для просмотра потока можно воспользоваться проигрывателем, размещенным на портале Azure.

Разрешенные IP-адреса

Вы можете определить IP-адреса, которым разрешено подключаться к конечной точке предварительного просмотра. Если этого не сделать, будут разрешены все IP-адреса. Разрешенные IP-адреса можно указать следующим образом:

  • отдельный IP-адрес (например, 10.0.0.1);
  • диапазон IP-адресов, заданный с помощью IP-адреса и маски подсети CIDR (например,10.0.0.1/22);
  • диапазон IP-адресов, заданный с помощью IP-адреса и маски подсети в десятичной записи (например, 10.0.0.1(255.255.252.0)).

Вывод канала

Дополнительные сведения о выводе канала см.в разделе Интервал опорного кадра.

Программы, управляемые каналом

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

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

Каждая программа связана с ресурсом, в котором хранится передаваемый в потоковом режиме контент. Ресурс сопоставляется с контейнером блочных BLOB-объектов в учетной записи хранения Azure. Файлы ресурса хранятся в этом контейнере как большие двоичные объекты. Чтобы опубликовать программу для просмотра потока клиентами, необходимо создать указатель OnDemand для соответствующего ресурса. С помощью этого указателя можно сформировать URL-адрес потоковой передачи данных, который предоставляется клиентам.

Канал поддерживает одновременную потоковую трансляцию до трех программ, поэтому можно создавать по несколько архивов одного и того же входящего потока. Благодаря этому можно публиковать и архивировать разные части транслируемого мероприятия. Предположим, например, что, согласно существующим нормативам, необходимо архивировать 6 часов программы, а транслировать только последние 10 минут. Для этого необходимо создать две одновременно работающие программы. Для одной из них настроено архивирование шести часов транслируемого мероприятия, но без публикации. Для второй программы настроено архивирование 10 минут с публикацией.

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

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

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

Состояния канала и их сопоставление с режимом выставления счетов

Возможные значения для текущего состояния канала:

  • Остановлен. Это начальное состояние канала после его создания. В этом состоянии можно изменять свойства канала, но потоковая передача запрещена.
  • Запуск. Канал запускается. В этом состоянии обновление и потоковая передача запрещены. Если возникает ошибка, канал возвращается в состояние Остановлен.
  • Выполняется. Канал может обрабатывать динамические потоки.
  • Остановка. Канал останавливается. В этом состоянии обновление и потоковая передача запрещены.
  • Удаление. Канал удаляется. В этом состоянии обновление и потоковая передача запрещены.

В таблице ниже показано, как состояния канала соотносятся с режимом выставления счетов.

Состояние канала Индикаторы в пользовательском интерфейсе портала Выставление счетов
Запуск Запуск Нет (переходное состояние)
Выполнение Готово (нет запущенных программ)

или

Потоковая передача (запущена по крайней мере одна программа)

Да
Остановка Остановка Нет (переходное состояние)
Остановлена Остановлена Нет

Вставка субтитров и рекламы

В следующей таблице показаны поддерживаемые стандарты субтитров и рекламы.

Standard Примечания
CEA-708 и EIA-608 (708/608) CEA-708 и EIA-608 — это стандарты субтитров для США и Канады.

В настоящее время субтитры поддерживаются, только если они передаются в закодированном входном потоке. Необходимо использовать динамический кодировщик мультимедиа, который может вставлять субтитры стандарта 608 или 708 в закодированный поток, передаваемый службам мультимедиа. Службы мультимедиа доставляют зрителям контент с субтитрами.

TTML в ismt (текстовые дорожки Smooth Streaming) Динамическая упаковка служб мультимедиа позволяет клиентам выполнять потоковую передачу контента в любом из следующих форматов: DASH, HLS или Smooth Streaming. Однако если вы принимаете фрагментированный поток MP4 (Smooth Streaming) с субтитрами внутри ISMT (текстовых дорожек Smooth Streaming), вы сможете доставлять контент только клиентам Smooth Streaming.
SCTE-35 SCTE-35 — это цифровая система передачи сигналов, которая используется для вставки рекламы. Получатели используют сигнал для вставки рекламы в поток на отведенное время. Данные SCTE-35 следует передавать в виде отдельной дорожки во входном потоке.

В настоящее время поддерживается только один формат входного потока, который переносит рекламные сигналы, — фрагментированный MP4 (Smooth Streaming). Единственным поддерживаемый выходной формат — это также Smooth Streaming.

Рекомендации

При использовании локального динамического кодировщика для отправки потока с разными скоростями в канал действуют следующие ограничения.

  • Убедитесь, что имеется достаточно свободных возможностей подключения к Интернету для отправки данных точкам приема.
  • Входящий поток с разными скоростями может предоставлять не более 10 уровней качества видео (слоев) и не более 5 звуковых дорожек.
  • Наибольшая средняя скорость передачи для любого из уровней качества видео не должна превышать 10 Мбит/с.
  • Общее значение средних скоростей для всех видео- и аудиопотоков всегда должно быть меньше 25 Мбит/с.
  • Во время работы канала или связанных с ним программ входной протокол изменить нельзя. Если вам нужны другие протоколы, создайте отдельный канал для каждого из них.
  • Канал может принимать поток с одной скоростью передачи. Но из-за того, что поток не обрабатывается каналом, клиентские приложения также будут получать поток с одной скоростью. (Этот вариант не рекомендуется.)

Ниже приведены другие рекомендации по работе с каналами и связанными компонентами.

  • Каждый раз при повторной настройке динамического кодировщика вызывайте для канала метод Reset . Перед сбросом канала нужно остановить программу. После сброса канала перезапустите программу.

    Примечание

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

  • Канал можно остановить, только если он находится в состоянии Выполняется и все передаваемые по нему программы остановлены.

  • По умолчанию в учетную запись служб мультимедиа можно добавить не более пяти каналов. Дополнительные сведения см. в статье Квоты и ограничения.

  • Счета выставляются, только когда канал находится в состоянии Выполняется. Дополнительные сведения см. в разделе Состояния канала и их сопоставление с режимом выставления счетов.

Рекомендуемые локальные кодировщики

Спецификация приема фрагментированного MP4 в реальном времени в службах мультимедиа Azure

Общие сведения о службах мультимедиа Azure и распространенные сценарии

Основные понятия служб мультимедиа Azure