SRT¶
media.ingest.srt
Описание¶
Sapsan сам подключается к удалённому SRT-серверу и забирает MPEG-TS в режиме caller. Для этого вход открывает произвольный локальный UDP-порт; он не относится к listeners и не является портом публикации. host и port задают удалённый сервер. Входящие подключения источников описаны в публикации SRT.
Настройка¶
Настройка выполняется через API central. Фрагмент конфигурации стрима:
streams:
- name: source1
inputs:
- srt:
host: origin.example.com
port: 9000
stream_id: '#!::r=studio,m=request'
latency_ms: 120
peer_timeout_ms: 5000
Параметры¶
| Параметр | Описание |
|---|---|
host |
IP или DNS удалённого сервера |
port |
его UDP-порт. |
stream_id |
stream_id передаётся серверу при подключении. |
passphrase |
согласованный пароль шифрования. |
latency_ms |
приёмная задержка и бюджет восстановления потерь. |
handshake_timeout_ms |
таймаут соединения |
peer_timeout_ms |
таймаут отсутствия данных. |
Аутентификация¶
Пароль passphrase должен совпадать с настройкой отправителя. stream_id используется по правилам удалённого сервера; токен доступа передаётся в нём, если сервер использует такую схему.
Варианты транспорта¶
-
UDP — клиентское подключение к удалённому SRT listener.
-
ACK/ACKACK — подтверждение доставки.
-
NAK/ARQ — запрос и приём повторов.
-
Буфер задержки — упорядочивание пакетов.
-
Too-late drop — отбрасывание опоздавших пакетов.
-
Keepalive — контроль соединения.
Поддерживаемые кодеки¶
- H.264
- HEVC / H.265
- AV1
- JPEG 2000
- MPEG-2 Video
- AAC (ADTS)
- AC-3
- E-AC-3
- MPEG Audio (Layer II / III)
- SMPTE ST 302M
MPEG-TS — контейнер, а SRT, RIST, UDP и HTTP — способы его доставки. Перечень относится к извлечению кадров из MPEG-TS, а не к декодированию или поддержке этих кодеков плеером.
AV1 распознаётся по stream_type 0x06 и регистрационному дескриптору AV01 в PMT; один PES должен содержать целый temporal unit. MPEG-TS с AV1 без этой сигнализации не поддерживается. Для AAC реализован разбор ADTS; наличие stream_type 0x11 само по себе не означает поддержку LATM. Opus может быть распознан в PMT, но текущий PES-разборщик не выдаёт его кадры.
Поведение при ошибках¶
Состояние входа и причина отказа доступны в статистике стрима. При обрыве или отсутствии кадров действует общий механизм повторных подключений и переключения на резерв.
Применение изменений¶
Смена адреса, порта, passphrase или stream_id перезапускает источник; смена только таймаутов применяется на лету.
Счётчики¶
Ниже — точные имена полей протокольной статистики. counter накапливает события, gauge показывает текущее значение; список включает оба вида. Нулевые поля могут отсутствовать в ответе. API и Prometheus используют разные проекции: весь список не следует ожидать в одном ответе Admin API. Доступ к детализации зависит от лицензии на счётчики.
Общие показатели входа: bytes, frames, errors, warnings. Они суммируют данные протокола, поэтому складывать их с протокольными счётчиками повторно не нужно.
Srt¶
| Поле | Тип |
|---|---|
incoming_bytes |
counter |
outgoing_bytes |
counter |
incoming_packets |
counter |
outgoing_packets |
counter |
incoming_lost_packets |
counter |
outgoing_lost_packets |
counter |
incoming_retransmitted_packets |
counter |
outgoing_retransmitted_packets |
counter |
incoming_recovered_packets |
counter |
missing_packets |
counter |
incoming_ack_packets |
counter |
outgoing_ack_packets |
counter |
incoming_ackack_packets |
counter |
outgoing_ackack_packets |
counter |
incoming_drop_request |
counter |
incoming_drop_requests |
counter |
outgoing_drop_requests |
counter |
incoming_nak_packets |
counter |
outgoing_nak_packets |
counter |
outgoing_drop_too_late_packets |
counter |
incoming_drop_late_seq |
counter |
incoming_drop_late_time |
counter |
incoming_drop_far_time |
counter |
incoming_drop_too_late |
counter |
incoming_drop_buffer_full |
counter |
loss_tracking_overflows |
counter |
keepalive_timeouts |
counter |
receive_buffer_size |
gauge |
send_buffer_size |
gauge |
rtt_us |
gauge |
rtt_var_us |
gauge |
source_clock_drift_us |
gauge |
memory_bytes |
gauge |
Mpegts¶
| Поле | Тип |
|---|---|
bytes |
counter |
sync_bytes |
counter |
packets |
counter |
frames |
counter |
errors |
counter |
errors_ts_pat |
counter |
errors_ts_service_lost |
counter |
broken |
counter |
memory_bytes |
gauge |
MpegtsPid¶
| Поле | Тип |
|---|---|
pid |
label |
pnr |
label |
packets |
counter |
frames |
counter |
empty_packets |
counter |
errors_adaptation_broken |
counter |
errors_ts_scrambled |
counter |
errors_ts_pmt |
counter |
errors_ts_cc |
counter |
errors_ts_tei |
counter |
errors_ts_psi_checksum |
counter |
errors_pid_lost |
counter |
broken_pes_count |
counter |
broken_pes_sum |
counter |
time_corrections |
counter |
corrected_backward_pts |
counter |
discarded_buffer_count |
counter |
discarded_buffer_sum |
counter |
fillers_count |
counter |
fillers_sum |
counter |
unpaired_fields |
counter |
warning_invalid_sibling_frames |
counter |
padding_pes_count |
counter |
padding_pes_sum |
counter |
orphan_pes_count |
counter |
dts_goes_backwards |
counter |
dts_jump_forward |
counter |
too_large_dts_jump |
counter |
pcr_resync |
counter |
pcr_jitter_ok_0 |
counter |
pcr_jitter_ok_500ns |
counter |
pcr_jitter_fail_500us |
counter |
pcr_jitter_fail |
counter |
hrd_buffer_min |
gauge |
hrd_buffer_max |
gauge |
hrd_buffer_underrun |
counter |
ad_marks |
counter |
errors_ad_marks_dropped |
counter |
warning_ad_mark_descriptors_dropped |
counter |
Прочее¶
Вместе с видео и звуком MPEG-TS передаёт:
-
DVB-телетекст.
-
KLV-метаданные.
-
Метки SCTE-35.
-
Языковые дескрипторы дорожек и дескрипторы DVB subtitles из PMT.