Проигрывание
Проигрывание потоков
Flussonic Media Server позволяет проигрывать потоки по разным протоколам.
На этой странице вы найдете:
-
URL-адреса, которые следует использовать в плеерах для воспроизведения видео по различным протоколам
-
ссылки на разделы, которые содержат больше информации о настройке воспроизведения через каждый определенный протокол
-
как разрешить и запретить проигрывание по определенным протоколам.
Настройки проигрывания находятся в пользовательском интерфейсе 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.
В файле конфигурации эти настройки выглядят следующим образом:
stream channel_01 {
protocols -mpegts -hls;
}
Для потока channel_02
вы хотите разрешить только проигрывание по DASH и запросы API, при этом запретив проигрывание по всем остальным протоколам:
В файле конфигурации эти настройки выглядят следующим образом:
stream channel_02 {
protocols dash api;
}