Варианты источников
Источник — это то, откуда Flussonic получает поток видеоданных. Источником может быть IP камера, спутник, HTTP сервер и т.д. Для указания источника нужно знать его адрес и видео-протокол, по которому Flussonic получает данные, т.е. нужно знать URL. Убедитесь, что ваш входной поток соответствует требованиям.
Источник видео задаётся с помощью параметра input
в настройках видеопотока. Например:
stream demo {
input udp://239.255.0.1:5500;
}
Ниже на этой странице показаны варианты URL для разных протоколов передачи медиа данных и для иных источников.
Как не нужно указывать источник в параметре input
-
Flussonic Media Server не поддерживает тип источника
http
, и адрес источника видаhttp://host/path
не будет работать. Требуется более детально указывать, что это — HTTP MPEG-TS, HLS или другой протокол. -
В качестве источника не указывайте файл на сервере. О том, как настроить раздачу файлов, читайте в разделе VOD — вещание файлов.
Важно. Для передачи видеоданных между несколькими серверами Flussonic Media Server мы рекомендуем использовать внутренний протокол Flussonic — M4F.
Содержание
- M4F/M4FS и M4S
- MPEG-TS по HTTP
- MPEG-TS по UDP
- MPEG-TS по TCP
- MPEG-TS опции
- HLS
- RTSP
- RTMP
- RTP
- File
- SHOUTcast
- SRT
- H323
- HTTP опции подключения
- DVB-S
- Таймшифт
- Миксер
- Мозаика
- Копия потока
M4F/M4FS и M4S
Мы рекомендуем протоколы M4F и M4S для передачи между серверами Flussonic. Это внутренние Flussonic-to-Flussonic протоколы.
M4F — сегментный протокол, рекомендуемый для любых задач телевидения, для массовых видеотрансляций. M4F подходит для репликации DVR архива, для рестриминга отдельных потоков в кластере.
- m4f://FLUSSONIC_HOST:PORT/STREAM_NAME — синтаксис
- m4f://flussonic.example.com/channel_01 — пример
M4FS работает так же, как и M4F, с одной разницей: он работает поверх HTTPS (использует шифрование SSL/TLS). Этот протокол рекомендуется использовать в тех случаях, когда шифрование необходимо или его требует провайдер контента.
- m4fs://FLUSSONIC_HOST:PORT/STREAM_NAME — синтаксис
- m4fs://flussonic.example.com/channel_01 — пример
M4S — это протокол потоковой передачи в реальном времени, идеально подходящий для рестриминга видео в реальном времени, например видеозвонков, для потоковой передачи видеоигр с низкой задержкой между серверами Flussonic.
- m4s://FLUSSONIC_HOST:PORT/STREAM_NAME — синтаксис
- m4s://flussonic.example.com/channel_01 — пример
M4S позволяет захватывать из источника только определенные дорожки:
- m4s://FLUSSONIC_HOST/STREAM_NAME/tracks-v2a1 — захват 2-й видеодорожки и 1-й аудиодорожки.
Если вы затрудняетесь в выборе между M4F и M4S, используйте m4f:// — это универсальное решение.
MPEG-TS по HTTP
- tshttp://hostname:port/stream — синтаксис (захват по HTTP)
- tshttps://hostname:port/stream — синтаксис (захват по HTTPS)
- tshttp://192.168.100.1/worldnews.ts — пример настоящего URL
MPEG-TS по UDP
SPTS (Single-Program Transport Stream)
- udp://MULTICAST-IP:PORT program=N — синтаксис (захват по UDP), где параметр
program
указывает номер программыN
- udp://239.255.1.1:5500 — мультикаст URL
- udp://239.255.1.1:5500/192.168.10.1 — захват мультикаста через указанный интерфейс
- udp://192.168.0.1:12345 — юникаст URL, где
192.168.0.1
— адрес источника. Flussonic фильтрует входящий UDP юникаст по указанному адресу. - udp://224.0.0.251:1234?sources=192.168.0.12 — захват SSM (Source Specific Multicast)
MPTS (Multiprogram Transport Stream)
- mpts-udp://MULTICAST-IP:PORT program=N — синтаксис (захват по UDP), где параметр
program
указывает номер программыN
- mpts-udp://224.0.0.251:1234 program=2001 — захват указанной программы мультикаст-потока. О том, что такое MPTS, читайте на странице MPTS.
MPEG-TS по TCP
- tstcp://192.168.0.1:54321
HLS
- hls://HOSTNAME/PATH/TO/MANIFEST.m3u8 — синтаксис
- hls://10.0.0.1/news.m3u8 — пример настоящего URL
- hls://example.com/news/index.m3u8 — пример настоящего URL.
- hlss://HOSTNAME/PATH/TO/MANIFEST.m3u8 — захват по HTTPS.
При запуске потока Flussonic Media Server проверяет, что источник не завис, скачивая несколько раз индекс.
Проверка может быть отключена с помощью опции skip_stalled_check
:
stream origin {
input fake://fake;
}
stream input_hls {
input hls://localhost:80/origin/index.m3u8 skip_stalled_check=true;
}
RTSP
Одного IP адреса камеры недостаточно для получения с нее видео. Всегда нужно указать ещё один путь. Он не всегда приводится в документации, поэтому, возможно, придется обращаться к продавцу или производителю камеры.
- rtsp://hostname/path — синтаксис
- rtsp://user:password@ip/path — URL с указанием авторизации
- rtsp2://hostname/path — включает транскодирование звука в AAC. Подробнее
- rtsp://192.168.0.100/h264 — пример настоящей ссылки
Вы можете использовать опцию tracks=1
для захвата только видео дорожки.
stream cam1 {
input rtsp://localhost:554/origin tracks=1;
}
RTMP
- rtmp://hostname/application/stream
- rtmp://10.0.0.1/live/news
Example:
stream clock {
input fake://fake;
}
stream input_rtmp {
input rtmp://localhost:1935/static/clock;
}
Протокол требует, чтобы в URL было не меньше двух сегментов.
Первый сегмент, по умолчанию, используется для указания имени RTMP приложения (application
).
Если название RTMP приложения на сервере состоит больше чем из одного сегмента, то в адресе надо указать два слэша для явного разделения на application
и stream name
.
RTP
- rtp://hostname:port
- rtp://239.0.0.1:5600
Flussonic может принять raw RTP мультикаст (т.е. видео без MPEG-TS контейнера) и определит, какой кодек используется: H.264 или H.265 (HEVC). При смене кодека потребуется ручной перезапуск потока.
Прием звука по RTP на данный момент не поддерживается.
File
- file://vod-location/file.mp4 синтакс
- file://vod/bunny.mp4 пример реального потока, подробнее о VOD путях читайте в статье
Flussonic может создать зацикленный поток из любого .mp4
или .ts
файла, укажите адрес используя схему file://
.
SHOUTcast
- shoutcast://example.com/radio.acc
- shoutcasts://example.com/radio.acc
SHOUTcast — протокол для передачи аудио потоков через HTTP-соединения. Используйте схему shoutcast://
чтобы захватить SHOUTcast и ICEcast радио-потоки, а shoutcasts://
для HTTPS-источников.
SRT
Flussonic поддерживает захват потоков по протоколу SRT. В этом случае Flussonic выполняет роль Caller, инициируя соединение.
Streamid
Для передачи потока по SRT необходимо указать параметр streamid
. Это строка длиной до 512 символов, которая задается на сокете перед установлением соединения. Она отправляется в составе вызова Caller и регистрируется на стороне Listener. Основываясь на переданной в ней информации, Listener может принять или отклонить соединение, выбрать нужный поток данных или задать нужный пароль для подключения.
Эта строка начинается с символов #!::
, после которых могут быть указаны следующие параметры:
r=
— имя потокаm=
— ожидаемый режим соединения:publish
(если Caller хочет отправить поток) илиrequest
(если Caller хочет получить поток)password=
— пароль для авторизации публичного сеанса (не рекомендуется, лучше используйте параметрpassphrase
, т.к. его ожидает большинство клиентов)
Во время SRT сеанса между двумя экземплярами Flussonic в streamid
автоматически добавляются следующие параметры:
s=
— идентификатор сеансаa=
— версия Flussonic
Пример: streamid="#!::r=my-stream,m=publish"
.
SRT ingest URL
Чтобы настроить захват потока по протоколу SRT во Flussonic, необходимо указать URL одним из двух способов:
- Захват только по IP:PORT:
srt://SRT-SOURCE:SRT_PORT
- Параметры SRT в параметрах URL:
srt://SRT-SOURCE:SRT_PORT streamid="#!::m=request,r=STREAM_NAME"
- Параметры SRT в URL query string:
srt://SRT-SOURCE:SRT_PORT?streamid=#!::m=request,r=STREAM_NAME
, где:
-
SRT-SOURCE — IP-адрес сервера-источника SRT-сигнала.
-
SRT_PORT — порт сервера-источника SRT-сигнала.
-
r=STREAM_NAME — имя потока для захвата.
Например:
stream ingest_srt {
input srt://SRT-SOURCE:8888 streamid="#!::m=request,r=srt_stream";
}
В примере выше мы настроили порт 8888
для захвата потока srt_stream
.
Flussonic также позволяет управлять захватом SRT с помощью ряда параметров.
Параметры для управления захватом потоков по SRT
В таблице ниже приведены параметры для управления захватом потоков по протоколу SRT:
Параметры | Тип данных | Описание | Пример |
---|---|---|---|
minversion |
x.y.z | Минимальна версия SRT, требуемая от пира. По умолчанию значение равно 1.0.0 . |
minversion=1.1.0 |
version |
x.y.z | Необходимая для установления соединения версия SRT. По умолчанию значение равно 1.0.0 . |
version=1.3.0 |
enforcedencryption |
булево значение | Если значение равно true , то отправитель и получатель должны иметь один и тот же пароль (включая пустую строку, иными словами, без защиты). Если пароли не совпадают или только одна из сторон использует защиту, то соединение разрывается. По умолчанию значение параметра равно true . |
enforcedencryption=false |
passphrase |
строка | Пароль для защиты передачи данных. Длина пароля должна быть не менее 10 и не более 79 символов. Значение по умолчанию — пустая строка (""). | passphrase=9876543210 |
timeout |
секунды | Если равно -1 , то время отправки данных не ограничено. Поведение по умолчанию. |
timeout=-1 |
linger |
секунды | Время ожидания получения данных сокетом. По умолчанию равно 180 (подставляется автоматически в зависимости от вида передачи данных). |
linger=1 |
connect_timeout |
секунды | Время ожидания подключения. По умолчанию значение равно 0 . |
connect_timeout=2 |
latency |
миллисекунды | Время ожидания, необходимое на доставку пакета данных от отправителя к получателю. По умолчанию равно 120 . |
latency=100 |
Пример с passphrase
:
stream ingest_srt {
input srt://SRT-SOURCE:9999 passphrase=0987654321 streamid="#!::m=request";
}
или:
stream ingest_srt {
input srt://SRT-SOURCE:9999?streamid=#!::m=request&passphrase=0987654321;
}
В примере выше мы настроили защищённый порт 9999
с помощью passphrase
.
Кроме того, Вы можете передать в streamid
потока:
-
u=USERNAME
— имя пользователя, используемое Flussonic в качестве токена при авторизации в сессии захвата. -
a=USER_AGENT
— агент пользователя, также используемый при авторизации в сессии захвата.
H323
- h323://192.168.100.150
Схема h323://
позволяет захватить видео по VoIP протоколу H323. Подробнее
Плата DVB, ATSC, ISDB
- input mpts-dvb://a0?program=1234
Схема mpts-dvb://
позволяет захватывать видео с плат DVB, ATSC, ISDB различных стандартов напрямую во Flussonic. Подробнее
Таймшифт
- timeshift://ipcam/3600
- timeshift://news/10600
Схема timeshift://
позволяет создать поток, идентичный исходному (ipcam, news в примере), который будет вещаться из архива с заданным отставанием (в секундах).
Миксер
- mixer://stream1,stream2
Схема mixer://
позволяет склеить видеодорожку из первого потока с аудиодорожкой из второго. Подробнее в отдельной статье.
Мозаика
- mosaic://cam1,cam2,cam3,cam4?fps=20&preset=ultrafast&bitrate=1024k&size=340x240&mosaic_size=4
Схема mosaic://
позволяет собрать несколько потоков на один экран (мозаика). Подробнее в отдельной статье.
Копия потока
- copy://stream_name
Этот тип источника позволяет копировать любой поток, который уже есть в конфигурации. Это полезно, когда вы не можете захватить поток более одного раза, например, с плат SDI или RTSP-источников. Подробнее в отдельной статье.
MPEG-TS опции
Для tshttp://, udp://, tstcp:// источников можно указать дополнительные опции.
Захват конкретной MPEG-TS программы и PID-ов
stream clock {
input fake://fake;
}
stream example {
input tshttp://localhost:80/clock/mpegts program=1 pids=211;
}
Управление субтитрами
Вы можете управлять DVB-субтитрами в выходном потоке с помощью опции subtitles
, которая имеет следующие значения:
drop
— в выходном потоке не будет дорожки субтитров. Пример см. ниже.accept
— в выходном потоке будет дорожка с субтитрами в DVB формате, без преобразования в текст.ocr_replace
— в выходном потоке будет дорожка, содержащая субтитры, преобразованные в текстовый формат (WebVTT).ocr_add
— выходной поток будет иметь две дорожки субтитров: исходную дорожку с субтитрами в DVB и новую дорожку с текстовыми субтитрами.
Принятие субтитров
Flussonic Media Server по умолчанию всегда принимает субтитры от публикуемых потоков. Это справедливо как для публикаций в статический поток, так и по динамическому имени. Чаще всего не нужно явно указывать subtitles=accept
.
Отклонение субтитров
Если субтитры в потоке не нужны, опцию subtitles
следует установить в drop
:
stream origin {
input file://vod/subs.ts;
}
stream example {
input tshttp://localhost:80/origin/mpegts subtitles=drop;
}
Note
Для live-потоков субтитры всегда включены. Опция subtitles
не поддерживается для live публикаций, и выключить субтитры в этом случае не получится.
Устаревшая опция allow_subtitles
поддерживается только для обратной совместимости.
Конвертация субтитров
О распознавании и преобразовании DVB-субтитров см. Конвертация субтитров из DVB в WebVTT
Редактирование дескриптора Language в Program Map Table (PMT)
Если во входящем MPEG-TS потоке отсутствует дескриптор Language
в аудио PID, могут возникнуть проблемы с воспроизведением на приставках, например, если там определенный язык был выбран как предпочтительный.
Flussonic 20.05 и выше позволяет устанавливать и редактировать дескриптор языка для аудио дорожек в выходном MPEG-TS потоке. Для этого используется опция lang
в настройках входного потока. Необходимо перечислить коды языков в формате ISO 639:
stream example {
input tshttp://localhost:8080/example1/mpegts lang.default=eng lang.a1=eng lang.a2=rus;
}
stream example1 {
input file://vod/multilang2.ts;
}
Эта конфигурация добавляет дескрипторы языка в PMT выходного потока.
HTTP опции подключения
При подключении к источнику по HTTP-протоколам может потребоваться указать опредленный User-Agent:
stream example {
input tshttp://source:80/stream user_agent="VLC"
}
Чтобы указать HTTP заголовок, например, Referer
:
stream example {
input tshttp://source:80/stream header.Referer=https://flussonic.com;
}
Эти параметры находятся на странице дополнительных параметров Input > Options в веб-интерфейсе.