Skip to content

Проигрывание

Проигрывание потоков

Flussonic Media Server позволяет проигрывать потоки по разным протоколам.

На этой странице вы найдете:

Настройки проигрывания находятся в пользовательском интерфейсе Flussonic на вкладке Output в настройках потока.

Кроме того, вы можете управлять проигрыванием потоков с помощью Streaming API.

embed.html

Адрес: http://FLUSSONIC-IP/STREAMNAME/embed.html

В Flussonic Media Server есть специальная страница — embed.html, которая предназначена для вставки видео на сайт или просмотра видео через браузер. Страница автоматически определяет браузер и выбирает поддерживаемый протокол. Для большинства устройств на сегодня — это HLS. Подробнее в статье Вставка видео на сайт (embed.html).

HLS

Адрес для плеера: http://FLUSSONIC-IP/STREAMNAME/index.m3u8

Подробнее в статье «Воспроизведение HLS». Для вставки на сайт используйте (embed.html) или любой сторонний плеер. Например, hls.js или clappr.

HLS для мультиязыковых потоков, просмотр на приставке и в VLC

Адрес для плеера: http://flussonic-ip/STREAMNAME/video.m3u8

Подробнее в статье «Мультиязычный HLS».

MSE-LD

Адрес для плеера: ws://FLUSSONIC-IP/STREAMNAME/mse_ld

HTML5 (MSE-LD)

Поток, проигрываемый по HTML5, доступен по адресу: http://FLUSSONIC-IP/STREAMNAME/embed.html?realtime=true

Подробнее в статье «HTML5 (MSE-LD) воспроизведение с низкой задержкой».

DASH

Поток доступен по адресу http://FLUSSONIC-IP/STREAMNAME/index.mpd

Кроме того, есть специальный плейлист "rewind-N.mpd" с большим «скользящим» окном, позволяющий перематывать и ставить на паузу потоки на долгие часы: http://FLUSSONIC-IP/STREAMNAME/rewind-7200.mpd

Подробнее в статье «Воспроизведение DASH».

MSS

Поток доступен по адресу: http://FLUSSONIC-IP/STREAMNAME.isml/manifest

Воспроизведение отдельных дорожек, выбор субтитров

Если у потока есть несколько аудио- и видеодорожек, то можно указать, какие именно дорожки следует отдавать. Для этого укажите номера дорожек, добавив параметр filter.tracks= к URL потока.

  • http://FLUSSONIC-IP/STREAMNAME.isml/manifest?filter.tracks=v1a1 — выбрать первую аудио- и вторую видеодорожки.
  • http://FLUSSONIC-IP/STREAMNAME.isml/manifest?filter.tracks=a1 — только аудио.
  • http://FLUSSONIC-IP/STREAMNAME.isml/manifest?filter.tracks=v1 — только видео.
  • http://FLUSSONIC-IP/STREAMNAME.isml/manifest?filter.tracks=a1t2 — выбрать первую аудиодорожку и вторую дорожку с субтитрами.
  • http://FLUSSONIC-IP/STREAMNAME.isml/manifest?filter.tracks=v1t1t2t3 — первая видеодорожка и три дорожки с субтитрами.

Указание дорожек необходимо для проигрывания потока на клиентских устройствах, которые, к примеру, не поддерживают многоязыковой MSS манифест.

О том, как проиграть архив по MSS, см. в разделе Доступ к DVR

HTTP MPEG-TS

Поток доступен по адресу: http://FLUSSONIC-IP/STREAMNAME/mpegts

RTMP

Поток доступен по адресу: rtmp://FLUSSONIC-IP/static/STREAMNAME

RTSP

Поток доступен по адресу: rtsp://FLUSSONIC-IP/STREAMNAME

Если у потока есть несколько аудио- и видеодорожек, то по умолчанию Flussonic выбирает первую дорожку (a1v1).

Можно указать, какие именно дорожки следует отдавать. Для этого укажите номера дорожек, добавив параметр tracks к URL потока.

Примеры:

  • rtsp://FLUSSONIC-IP/STREAMNAME?tracks=a2v1

  • rtsp://FLUSSONIC-IP/STREAMNAME?tracks=a2v1&from=1 — DVR.

  • rtsp://FLUSSONIC-IP/vod/file?tracks=a2v1 — VOD.

  • rtsp://FLUSSONIC-IP/STREAMNAME2 = rtsp://FLUSSONIC-IP/STREAMNAME1?tracks=v1a1

Можно выбрать одну дорожку:

  • rtsp://FLUSSONIC-IP/STREAMNAME?tracks=a1 — выбрать только аудио.

  • rtsp://FLUSSONIC-IP/STREAMNAME?tracks=v1 — выбрать только видео.

Если указать больше двух дорожек или указать дорожку в неверном формате, то будет использоваться параметр по умолчанию (a1v1).

WebRTC

Поток доступен по адресу:

  • ws://FLUSSONIC-IP/STREAM_NAME/webrtc

  • wss://FLUSSONIC-IP/STREAM_NAME/webrtc?transport=tcp — передавать WebRTC поток по TCP.

Подробнее о WebRTC плеере и организации проигрывания в статье «WebRTC проигрывание».

SHOUTcast

Поток доступен по адресу: http://FLUSSONIC-IP/STREAMNAME/shoutcast

Flussonic Media Server умеет отдавать SHOUTcast или ICEcast радиопоток.

SRT

Flussonic поддерживает проигрывание SRT-потоков.

Протокол SRT имеет несколько режимов работы: Caller (Инициатор), Listener (Слушатель) и Rendezvous. В парадигме Flussonic проигрывание можно соотнести с режимом Listener, поскольку Flussonic находится в ожидании соединения и при удачном его установлении, начинает взаимодействие с Инициатором (Caller).

Настройка SRT-порта обычно производится для одного потока, т. е. один SRT-поток на один порт. Кроме того, Flussonic предоставляет Вам способ настроить один SRT-порт для нескольких потоков. Например, если Вы используете протокол SRT для ретрансляции. Мы познакомим Вас с обоими способами.

Один SRT-поток на один порт

Чтобы настроить SRT-порт для проигрывания потока, используйте srt_play в настройках потока:

stream example_stream {
  input fake://fake;
  srt_play {
  port 9998;
  }
}

Формат ссылки для проигрывания потока выглядит следующим образом:

  • srt://FLUSSONIC-IP:SRT_PORT

, где:

  • FLUSSONIC-IP — IP-адрес сервера Flussonic.

  • SRT_PORT — порт для проигрывания.

Следовательно, применительно к нашему примеру ссылка будет следующая: srt://localhost:9988.

Таким образом, с помощью настройки srt_play Вы разрешаете проигрывать SRT-поток по указанному порту.

Вы также можете определить SRT-порт для конкретного потока и для публикации.

Чтобы узнать больше о публикации SRT-потоков во Flussonic, см. Публикация по SRT.

Чтобы настроить один порт одновременно для публикации и проигрывания потока, используйте опцию srt PORT_NUMBER:

stream example_stream {
  input publish://;
  srt 9998;
}

В примере выше мы можем публиковать SRT-поток example_stream по порту 8888 и проиграть его по этому же самому порту, используя URL следующего формата:

  • srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::m=request

, где:

  • m=request — режим для проигрывания.

streamid используется для того, чтобы указать режим m= для проигрывания потока example_stream, поскольку иначе неочевидно будем мы публиковать поток или проигрывать его.

Таким образом, URL для проигрывания потока example_stream будет выглядеть так: srt://localhost:8888?streamid=#!::m=request.

Flussonic позволяет не только использовать один SRT-порт для одного потока, разрешая проигрывание для этого потока, но и настроить один порт для проигрывания нескольких потоков.

Один SRT-порт для проигрывания нескольких потоков

Для того, чтобы настроить SRT-порт для проигрывания нескольких потоков, используйте srt_play в качестве глобальной настройки:

srt_play {
  port 9998;
}
stream example_stream {
  input fake://fake;
}

Чтобы проиграть example_stream по SRT-порту 9999, используйте URL следующего вида:

  • srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME

, где:

  • r=STREAM_NAME — имя потока.

Следовательно, для нашего примера ссылка выглядит так: srt://localhost:9999?streamid=#!::r=example_stream.

Рассмотрим пример. Допустим, Вам необходимо публиковать SRT-поток во Flussonic по отдельному определённому для публикации порту, а затем проигрывать этот поток наряду с несколькими другими. В таком случае конфигурация выглядит следующим образом:

srt_play {
  port 9998;
}
stream example_stream {
  input fake://fake;
}
stream another_stream {
  input publish://;
  srt_publish {
    port 8888;
  }
}

URL для проигрывания another_stream отличается от URL для example_stream и имеет следующий вид:

  • srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME,m=request

, где:

  • m=request — режим для проигрывания.

  • r=STREAM_NAME — имя потока.

Тогда URL для проигрывания another_stream выглядит так: srt://localhost:9988?streamid=#!::r=another_stream,m=request.

Для вашего удобства мы собрали всё в одну таблицу:

URL для проигрывания Конфигурация Описание Пример URL
srt://FLUSSONIC-IP:SRT_PORT ```
stream example_stream {
input fake://fake;
srt_play {
port 9998;
}
}
``` Разрешает проигрывать только один поток для одного порта.
Поддерживается большинством плееров.
srt://localhost:9988
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::m=request ```
stream example_stream {
input publish://;
srt 9998;
}
``` Разрешает публиковать и проигрывать поток по одному и тому же порту. srt://localhost:8888?streamid=#!::m=request
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME ```
srt_play {
port 9998;
}
stream example_stream {
input fake://fake;
}
``` Разрешает проигрывать несколько потоков по одному SRT-порту. srt://localhost:9999?streamid=#!::r=example_stream
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME,m=request ```
srt_play {
port 9998;
}
stream example_stream {
input fake://fake;
}
stream another_stream {
input publish://;
srt_publish {
port 8888;
}
}
``` Разрешает проигрывать поток по глобально определённому порту при условии, что в настройках этого потока определён также и порт для публикации. srt://localhost:9988?streamid=#!::r=another_stream,m=request

Flussonic даёт возможность управлять проигрыванием потока с помощью параметров.

Параметры для управления проигрыванием потоков по SRT

Ниже Вы можете найти таблицу с параметрами для управления проигрыванием потоков по SRT:

Параметры Тип данных Описание Пример
minversion 0xXXYYZZ или x.y.z Минимальна версия SRT, требуемая от пира. По умолчанию значение равно (0x010000) или 1.0.0.. minversion 1.3.0.
version 0xXXYYZZ или x.y.z Необходимая версия SRT. По умолчанию значение равно (0x010000) или 1.0.0.. version 1.3.0
enforcedencryption булево значение Если значение равно true, то отправитель и получатель должны иметь один и тот же пароль (включая пустую строку, иными словами, без защиты). Если пароли не совпадают или только одна из сторон использует защиту, то соединение разрывается. По умолчанию значение параметра равно true. enforcedencryption 0
passphrase строка Пароль для защиты передачи данных. Длина пароля должна быть не менее 10 и не более 79 символов. Значение по умолчанию — пустая строка (""). passphrase 9876543210
linger численное (в секундах) Время ожидания получения данных сокетом. По умолчанию равно -1(подставляется автоматически в зависимости от вида передачи данных). linger 2
timeout численное (в миллисекундах) Если равно false, то время отправки данных не ограничено. Поведение по умолчанию. timeout 100

Пример с passphrase:

stream example_stream {
  input fake://fake;
  srt_play {
    passphrase 0987654321;
    port 9998;
  }
}

URL будет иметь следующий вид:

  • srt://FLUSSONIC-IP:9998?passphrase=0987654321&streamid=#!::m=request

Получение данных о проигрываемом потоке

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

Адрес для получения технической информации о проигрываемом потоке:

http://FLUSSONIC-IP/STREAM_NAME/media_info.json

Адрес для получения информации о статусе записи архива DVR потока:

http://FLUSSONIC-IP/STREAM_NAME/recording_status.json

Как настроить протоколы для проигрывания потока

Приведенные выше URL-адреса можно найти в пользовательском интерфейсе Flussonic на вкладке Output в настройках потока.

По умолчанию разрешено проигрывание по всем протоколам, но вы можете запретить проигрывание по протоколам, которые укажете.

Начиная с версии 20.02, вы можете использовать более короткую нотацию для указания выходных протоколов для потока. Пользовательский интерфейс поддерживает новую нотацию, а в файле можно перечислить все протоколы с помощью опции protocol. Вы также можете разрешить или запретить запросы API, используя в этой опции параметр api.

Прежняя нотация тоже поддерживается.

Пример

Например, для потока channel_01 вы хотите разрешить проигрывание по всем протоколам, кроме MPEG-TS и HLS.

output protocols

В файле конфигурации эти настройки выглядят следующим образом:

stream channel_01 {
  protocols -mpegts -hls;
}

Для потока channel_02 вы хотите разрешить только проигрывание по DASH и запросы API, при этом запретив проигрывание по всем остальным протоколам:

output protocols

В файле конфигурации эти настройки выглядят следующим образом:

stream channel_02 {
  protocols dash api;
}