Download OpenAPI specification:Download
This API describes how Flussonic streaming server fetches runtime stream configuration from backend written by user. So, this it not an API to Flussonic, this is an API, that Flussonic is using to connect to other system.
Permanent download link to JSON schema file.
You can make full control over streams in Flussonic without modifying config file. This is a preferrable way to integrate streaming server into complex systems.
You can launch static streams that will work without client requests and you can dynamically control each request to the stream that is not known to server.
This API was designed with the idea in mind that you may have hundreds and thousands of streaming server and have millions of streams in your database. None of the streaming servers can even know the full amount of streams, but each of them can have access to any stream if required.
name
query string (comma-joined stream names) to
check streams. If you do not respond with their configuration, they will be closed.name
in query string.You can monitor server load and store it in centralized database. This information cancan be used to distribute streams across streaming servers.
You have several servers that can be used for accepting incoming publishing.
Use transcoder usage statistics to push incoming published streams to least loaded transcoder.
Use some fault-tolerant system like etcd for keeping streams information and launch copy of your backend near each Flussonic.
It is impossible to configure more than one configuration backend to Flussonic and will not be. Use local copy of database for failure resistency.
Your configuration backend must be fast, consider targeting 100 ms on whole response. Use ram database, optimized JSON generation, etc.
If you have 10 flussonic instances and you have configured single configuration backend, then you will have more than 3 requests per second. If you have configured single core for this responses and you use more than 300 ms (real life examples), then Flussonics will start delaying in receiving new updates.
This API method will be called to fetch list of streams.
Your system must responce to this call to be able to dynamically configure streaming server in runtime, add streams, reconfigure them or remove.
host required | string Example: host=streamer03.my.cdn Hostname of the streamer server that is requesting the config. This parameter is mandatory, because streamer will send it and you can rely on it, but it is absolutely ok to create several paths for different servers and ignore this query string. |
name | string Example: name=s01,s02,s03 Comma-separated exlpicitly passed list of stream names. Used to get configuration
for the streams that were not listed in previous request without |
cursor | string Example: cursor=JTI0cG9zaXRpb25fZ3Q9MQ== Properly encoded analog of offset, allowing to read next bunch of items.
We do not offer common |
{- "estimated_count": 5,
- "next": "JTI0cG9zaXRpb25fZ3Q9MA==",
- "prev": "JTI0cG9zaXRpb25fbHQ9MSYlMjRyZXZlcnNlZD10cnVl",
- "timing": { },
- "updated_at": 1727274724000,
- "streams": [
- {
- "name": "string",
- "comment": "This is a test stream",
- "title": "Hockey channel",
- "recheck_secondary_inputs_interval": 120,
- "static": true,
- "inputs": [
- {
- "url": "fake://fake",
- "width": 0,
- "height": 0,
- "bitrate": 0,
- "comment": "This is a test input",
- "source_timeout": 20,
- "audio_timeout": 20,
- "video_timeout": 20,
- "max_retry_timeout": 30,
- "timeout": 10,
- "frames_timeout": 3,
- "priority": 1,
- "stats": {
- "ip": "172.16.25.73",
- "proto": "dash",
- "opened_at": 1637094994000,
- "media_info": {
- "flow_type": "stream",
- "tracks": [ ],
- "duration": 0,
- "provider": "Netflix",
- "title": "Bunny",
- "stream_id": 253,
- "program_id": 110
}, - "ts_delay": 1284,
- "ts_delay_per_tracks": [
- 1284
], - "url": "udp://239.0.0.1:1234",
- "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML. like Gecko) Chrome/90.0.4430.72 Safari/537.36",
- "active": true,
- "dvr_info": {
- "from": 1641045644,
- "depth": 259200,
- "ranges": [
- {
- "from": 1525186456,
- "duration": 28800,
- "opened_at": 1000000000000,
- "closed_at": 1000000000000
}
], - "bytes": 129600000000,
- "disk_size": 1099511627776,
- "duration": 172800
}, - "bytes": 0,
- "frames": 0,
- "retries": 0,
- "media_info_changes": 0,
- "valid_secondary_inputs": 2,
- "invalid_secondary_inputs": 0,
- "resync_count_normal": 0,
- "resync_count_jump": 0,
- "resync_count_drift": 0,
- "reorder_count": 0,
- "ad_splices_ingested": 0,
- "ad_splices_inserted": 0,
- "srt": {
- "rtt": 0,
- "latency": 0,
- "packets": 0,
- "retransmitted_packets": 0,
- "error_lost_packets": 0,
- "error_dropped_packets": 0
}, - "onvif": {
- "motion_detected_count": 0,
- "errors_not_authorized_count": 0,
- "errors_url_unreachable_count": 0,
- "errors_no_service_count": 0,
- "errors_incorrect_time_values_count": 0
}, - "errors": 0,
- "errors_lost_packets": 0,
- "errors_decoder_reset": 0,
- "errors_broken_payload": 0,
- "errors_dropped_frames": 0,
- "errors_desync": 0,
- "errors_ts_pat": 0,
- "pids": [
- {
- "pid": 0,
- "pnr": 0,
- "packets": 0,
- "frames": 0,
- "empty_packets": 0,
- "errors_adaptation_broken": 0,
- "errors_ts_scrambled": 0,
- "errors_ts_pmt": 0,
- "errors_ts_cc": 0,
- "errors_ts_tei": 0,
- "errors_ts_psi_checksum": 0,
- "errors_pid_lost": 0,
- "broken_pes_count": 0,
- "broken_pes_sum": 0,
- "time_corrections": 0,
- "repeated_frames": 0,
- "corrected_backward_pts": 0,
- "pcr_resync": 0,
- "discarded_buffer_count": 0,
- "discarded_buffer_sum": 0,
- "fillers_count": 0,
- "fillers_sum": 0,
- "padding_pes_count": 0,
- "padding_pes_sum": 0,
- "crashed": 0,
- "dts_goes_backwards": 0,
- "dts_jump_forward": 0,
- "too_large_dts_jump": 0
}
], - "rtp_channels": [
- {
- "channel_id": 0,
- "content": "video",
- "rtp_packets": 0,
- "rtcp_packets": 0,
- "bytes": 0,
- "frames": 0,
- "pt_reject_count": 0,
- "pt_reject_sum": 0,
- "ts_goes_backwards": 0,
- "ts_jump_forward": 0,
- "ts_stuck": 0,
- "errors_dts_stuck": 0,
- "sr_ts_stuck": 0,
- "sender_clock_deviation": 0,
- "marker_packets_count": 0,
- "no_marker_mode_flag": true,
- "errors_broken_payload": 0,
- "errors_lost_packets": 0,
- "nal_count": 0,
- "discarded_broken_nal_count": 0,
- "discarded_not_allowed_nal_count": 0,
- "nal_fu_count": 0,
- "nal_stap_a_count": 0,
- "nal_aggregation_count": 0,
- "fu_pattern_is_broken_count": 0,
- "fu_has_both_start_end_bits_count": 0,
- "incomplete_nal_count": 0,
- "discarded_fu_count": 0,
- "fu_end_then_middle_workaround_count": 0,
- "nal_sei_count": 0,
- "invalid_sei_type_count": 0,
- "invalid_sei_size_count": 0,
- "invalid_sei_payload_count": 0,
- "discarded_sei_count": 0,
- "nal_idr_count": 0,
- "nal_single_count": 0,
- "nal_sps_count": 0,
- "nal_pps_count": 0,
- "nal_aud_count": 0,
- "nal_filler_count": 0,
- "nal_slice_count": 0,
- "nal_vps_count": 0,
- "nal_other_count": 0,
- "discarded_nal_count": 0
}
], - "errors_ts_service_lost": 0,
- "errors_ts_stuck_restarts": 0,
- "errors_404": 0,
- "errors_403": 0,
- "errors_500": 0,
- "errors_crashed": 0,
- "sdi": {
- "errors_no_signal": 0,
- "errors_duplicate": 0,
- "errors_ts_duplicate": 0,
- "errors_cpu_stall": 0,
- "peak_duration_deviation": 0,
- "avg_recv_duration": 0
}
}, - "user_agent": "string",
- "via": "string",
- "output_audio": "keep",
- "headers": {
- "User-Agent": "curl/7.85.0",
- "Authorization": "Basic dXNlcjpwYXNzd29yZA=="
}, - "no_clients_reconnect_delay": 0,
- "allow_if": "string",
- "deny_if": "string",
- "bind_ip": "string",
- "mbr": "string"
}
], - "password": "string",
- "input_media_info": {
- "tracks": [
- {
- "match": {
- "language": "eng",
- "codec": "ac3",
- "index": 2
}, - "track_id": "v1",
- "frame_duration": 0,
- "avg_fps": 0,
- "bandwidth": 2600,
- "content": "audio",
- "title": "Video1",
- "bitrate": 2543,
- "pid": 8191,
- "codec": "h264",
- "last_gop": 28,
- "avg_gop": 25,
- "length_size": 2,
- "is_progressive": true,
- "closed_captions": [ ],
- "width": 0,
- "height": 0,
- "fps": 0,
- "pix_fmt": "yuv420p",
- "num_refs_frames": 32,
- "sar_width": 1,
- "sar_height": 1,
- "pixel_width": 0,
- "pixel_height": 0,
- "level": "string",
- "profile": "string",
- "bframes": 3,
- "gop_size": 0
}
], - "provider": "Netflix",
- "title": "Bunny",
- "stream_id": 253,
- "program_id": 110
}, - "provider": "SportsTV",
- "dvbocr": "replace",
- "source_timeout": 10,
- "video_timeout": 20,
- "audio_timeout": 20,
- "max_retry_timeout": 30,
- "silencedetect": {
- "duration": 20,
- "interval": 10,
- "noise": -30
}, - "motion_detector": {
- "enabled": true,
- "pull": "string"
}, - "backup": {
- "file": "vod/blank.mp4",
- "timeout": 10,
- "audio_timeout": 5,
- "video_timeout": 4,
- "transcode": true,
- "dvr": true
}, - "epg_enabled": true,
- "nomedia": false,
- "mpegts_ac3": "keep",
- "clients_timeout": 485,
- "retry_limit": 0,
- "transcoder": {
- "global": {
- "target": "uhdtv",
- "hw": "cpu",
- "deviceid": "auto",
- "external": true,
- "keep_ts": true,
- "fps": 24,
- "gop": 150,
- "resize_mode": "vic",
- "burn": {
- "text": {
- "text": "string",
- "x": 0,
- "y": 0,
- "position": "tl",
- "font": {
- "file": "/usr/share/fonts/truetype/freefont/FONT_NAME.ttf",
- "size": 24,
- "color": "string",
- "alpha": 1
}, - "box": {
- "borderw": 10,
- "color": "string",
- "alpha": 0
}
}, - "time": {
- "text": "string",
- "x": 0,
- "y": 0,
- "position": "tl",
- "font": {
- "file": "/usr/share/fonts/truetype/freefont/FONT_NAME.ttf",
- "size": 24,
- "color": "string",
- "alpha": 1
}, - "box": {
- "borderw": 10,
- "color": "string",
- "alpha": 0
}
}
}
}, - "decoder": {
- "pix_fmt": "yuv420p",
- "deinterlace": true,
- "deinterlace_rate": "frame",
- "crop": {
- "left": 0,
- "top": 0,
- "width": 0,
- "height": 0
}, - "drop_frame_interval": 3,
- "no_dpb": false,
- "streaming_frame": false
}, - "audio": {
- "codec": "opus",
- "bitrate": 64000,
- "avol": "-6dB",
- "split_channels": false,
- "sample_rate": 48000,
- "channels": 2
}, - "video": [ ],
- "tracks": [ ]
}, - "logo": {
- "height": 100,
- "width": 200,
- "left": 15,
- "top": 15,
- "right": 0,
- "bottom": 0
}, - "jpeg_snapshot_sign_key": "string",
- "dvr": {
- "reference": "localdvr0",
- "remotes": [
- "string"
], - "storage_limit": 400000000000,
- "expiration": 0,
- "episodes_expiration": 0,
- "episodes_url": "string",
- "dvr_replicate": true,
- "replication_speed": 0,
- "replication_port": 8002,
- "schedule": [
- [
- 800,
- 1600
], - [
- 2200,
- 130
]
], - "dvr_offline": true,
- "copy": "s3://token@minio.mycompany.com/dvr-bucket"
}, - "on_play": {
- "domains": [
- "mycompany.com"
], - "max_sessions": 5000,
- "allowed_countries": [
- "US",
- "DE",
- "GB"
], - "disallowed_countries": [
- "US",
- "DE",
- "GB"
], - "soft_limitation": false,
- "session_keys": [
- "name",
- "token",
- "proto",
- "ip"
], - "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "on_publish": {
- "domains": [
- "mycompany.com"
], - "max_sessions": 5000,
- "allowed_countries": [
- "US",
- "DE",
- "GB"
], - "disallowed_countries": [
- "US",
- "DE",
- "GB"
], - "soft_limitation": false,
- "session_keys": [
- "name",
- "token",
- "proto",
- "ip"
], - "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "drm": {
- "vendor": "string",
- "hls_ext_x_key_iv": true,
- "resource_id": "L2sItm6",
- "expires": 0,
- "encryption": "full",
- "save_template": "save_template=/var/log/flussonic/drm/$name$-$type$-$now$.xml",
- "dump_url": true
}, - "protocols": {
- "whitelist": false,
- "hls": true,
- "cmaf": true,
- "dash": true,
- "player": true,
- "mss": true,
- "rtmp": true,
- "rtsp": true,
- "m4f": true,
- "m4s": true,
- "mseld": true,
- "tshttp": true,
- "webrtc": true,
- "srt": true,
- "shoutcast": true,
- "mp4": true,
- "jpeg": true,
- "api": true
}, - "prepush": false,
- "cmaf_enabled": true,
- "segment_count": 4,
- "segment_duration": 5000,
- "chunk_duration": 200,
- "dash_update_period": 270000000,
- "url_prefix": false,
- "hls_scte35": "scte35",
- "add_audio_only": true,
- "substyle": {
- "align": "middle",
- "valign": "bottom"
}, - "webrtc_abr": {
- "start_track": "v2",
- "loss_count": 2,
- "up_window": 17,
- "down_window": 6,
- "ignore_remb": true,
- "bitrate_prober": true,
- "bitrate_probing_interval": 6
}, - "pushes": [
- {
- "url": "string",
- "service": "My service",
- "domain": "officialdomain.com",
- "encoder": "Lavf57",
- "comment": "This is a test push",
- "stats": {
- "url": "string",
- "opened_at": 1000000000000,
- "status": "starting",
- "standby_status": "active",
- "bytes": 0,
- "frames": 0,
- "segments": 0,
- "pusher_restarts": 0,
- "errors_stop_overloaded": 0,
- "errors_dropped_frames": 0,
- "errors_dropped_segments": 0,
- "pids": [
- {
- "pid": 0,
- "pnr": 0,
- "packets": 0,
- "payload_bytes": 0,
- "fillers_bytes": 0,
- "stuffing_packets": 0,
- "trimmed_bytes": 0,
- "trimmed_frames": 0
}
], - "sys_fillers_bytes": 0,
- "sys_payload_bytes": 0,
- "sys_stuffing_packets": 0,
- "encoded_bytes": 0,
- "resent_packets": 0,
- "errors_device_not_opened": 0,
- "errors_device_buffer_overflow": 0,
- "errors_audio_frame_decode": 0,
- "errors_video_frame_decode": 0,
- "errors_no_destination": 0,
- "errors_tls": 0,
- "errors_connection_lost": 0,
- "errors_401": 0,
- "errors_403": 0,
- "errors_404": 0,
- "errors_409": 0,
- "errors_500": 0,
- "errors_redirect_limit": 0,
- "errors_not_authorized": 0,
- "genlock_status": "no_ref",
- "genref_status": {
- "port": 0,
- "external": true,
- "vstd": "pal",
- "vstd_detected": "pal"
}
}, - "retry_limit": 0,
- "retry_timeout": 7,
- "timeout": 10,
- "connect_timeout": 2,
- "disabled": true
}
], - "mpegts_pids": {
- "pmt": 8191,
- "pcr": 8191,
- "sdt": 8191,
- "media": [
- {
- "pid": 8191,
- "content": "audio",
- "codec": "scte35",
- "track": 1,
- "bitrate": 2543,
- "stream_type": 12,
- "es_info": "52010D",
- "stats": {
- "payload": 0,
- "fillers": 0,
- "stuffing": 0,
- "trimmed_bytes": 0,
- "trimmed_frames": 0
}
}
], - "default": "auto"
}, - "labels": {
- "key1": "value1",
- "key2": "value2"
}, - "playback_headers": [
- {
- "playback": "live",
- "protocols": {
- "whitelist": false,
- "hls": true,
- "cmaf": true,
- "dash": true,
- "player": true,
- "mss": true,
- "rtmp": true,
- "rtsp": true,
- "m4f": true,
- "m4s": true,
- "mseld": true,
- "tshttp": true,
- "webrtc": true,
- "srt": true,
- "shoutcast": true,
- "mp4": true,
- "jpeg": true,
- "api": true
}, - "headers": {
- "Cache-Control": "max-age=3600"
}, - "segment_headers": {
- "Cache-Control": "max-age=3600"
}
}
], - "debug_stream": {
- "ips": [
- "10.10.10.9"
], - "tracepoints": [
- "input",
- "stream",
- "webrtc_play_network"
], - "root": "/tmp/debug",
- "storage_limit": 400000000000,
- "expiration": 604800,
- "duration": 6000
}, - "cache": {
- "reference": "cache1",
- "misses": 3,
- "storage_limit": 400000,
- "expiration": 3600
}, - "vision": {
- "alg": "faces",
- "areas": "string"
}, - "srt_publish": {
- "port": 9050,
- "v": "srt1",
- "timeout": 10,
- "minversion": "1.1.0",
- "version": "1.3.0",
- "enforcedencryption": true,
- "passphrase": "9876543210",
- "linger": 15,
- "latency": 150,
- "streamid": "#!::r=my-stream,m=publish"
}, - "srt2_publish": {
- "port": 9050,
- "v": "srt1",
- "timeout": 10,
- "minversion": "1.1.0",
- "version": "1.3.0",
- "enforcedencryption": true,
- "passphrase": "9876543210",
- "linger": 15,
- "latency": 150,
- "streamid": "#!::r=my-stream,m=publish"
}
}
]
}
This API method will be called to fetch list of streams configurations.
Streamer will send here list of streams that were not enumerated in streams_list
response.
Use this to shutdown unknown streams or dynamically configure streams.
If you do not send a configuration of any stream named in name
query parameter,
it will be considered as an unknown and terminated immediately
host required | string Example: host=streamer03.my.cdn Hostname of the streamer server that is requesting the config. This parameter is mandatory, because streamer will send it and you can rely on it, but it is absolutely ok to create several paths for different servers and ignore this query string. |
name required | string Example: name=s01,s02,s03 Comma-separated exlpicitly passed list of stream names. Used to get configuration
for the streams that were not listed in previous request without |
cursor | string Example: cursor=JTI0cG9zaXRpb25fZ3Q9MQ== Properly encoded analog of offset, allowing to read next bunch of items.
We do not offer common |
{- "estimated_count": 5,
- "next": "JTI0cG9zaXRpb25fZ3Q9MA==",
- "prev": "JTI0cG9zaXRpb25fbHQ9MSYlMjRyZXZlcnNlZD10cnVl",
- "timing": { },
- "updated_at": 1727274724000,
- "streams": [
- {
- "name": "string",
- "comment": "This is a test stream",
- "title": "Hockey channel",
- "recheck_secondary_inputs_interval": 120,
- "static": true,
- "inputs": [
- {
- "url": "fake://fake",
- "width": 0,
- "height": 0,
- "bitrate": 0,
- "comment": "This is a test input",
- "source_timeout": 20,
- "audio_timeout": 20,
- "video_timeout": 20,
- "max_retry_timeout": 30,
- "timeout": 10,
- "frames_timeout": 3,
- "priority": 1,
- "stats": {
- "ip": "172.16.25.73",
- "proto": "dash",
- "opened_at": 1637094994000,
- "media_info": {
- "flow_type": "stream",
- "tracks": [ ],
- "duration": 0,
- "provider": "Netflix",
- "title": "Bunny",
- "stream_id": 253,
- "program_id": 110
}, - "ts_delay": 1284,
- "ts_delay_per_tracks": [
- 1284
], - "url": "udp://239.0.0.1:1234",
- "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML. like Gecko) Chrome/90.0.4430.72 Safari/537.36",
- "active": true,
- "dvr_info": {
- "from": 1641045644,
- "depth": 259200,
- "ranges": [
- {
- "from": 1525186456,
- "duration": 28800,
- "opened_at": 1000000000000,
- "closed_at": 1000000000000
}
], - "bytes": 129600000000,
- "disk_size": 1099511627776,
- "duration": 172800
}, - "bytes": 0,
- "frames": 0,
- "retries": 0,
- "media_info_changes": 0,
- "valid_secondary_inputs": 2,
- "invalid_secondary_inputs": 0,
- "resync_count_normal": 0,
- "resync_count_jump": 0,
- "resync_count_drift": 0,
- "reorder_count": 0,
- "ad_splices_ingested": 0,
- "ad_splices_inserted": 0,
- "srt": {
- "rtt": 0,
- "latency": 0,
- "packets": 0,
- "retransmitted_packets": 0,
- "error_lost_packets": 0,
- "error_dropped_packets": 0
}, - "onvif": {
- "motion_detected_count": 0,
- "errors_not_authorized_count": 0,
- "errors_url_unreachable_count": 0,
- "errors_no_service_count": 0,
- "errors_incorrect_time_values_count": 0
}, - "errors": 0,
- "errors_lost_packets": 0,
- "errors_decoder_reset": 0,
- "errors_broken_payload": 0,
- "errors_dropped_frames": 0,
- "errors_desync": 0,
- "errors_ts_pat": 0,
- "pids": [
- {
- "pid": 0,
- "pnr": 0,
- "packets": 0,
- "frames": 0,
- "empty_packets": 0,
- "errors_adaptation_broken": 0,
- "errors_ts_scrambled": 0,
- "errors_ts_pmt": 0,
- "errors_ts_cc": 0,
- "errors_ts_tei": 0,
- "errors_ts_psi_checksum": 0,
- "errors_pid_lost": 0,
- "broken_pes_count": 0,
- "broken_pes_sum": 0,
- "time_corrections": 0,
- "repeated_frames": 0,
- "corrected_backward_pts": 0,
- "pcr_resync": 0,
- "discarded_buffer_count": 0,
- "discarded_buffer_sum": 0,
- "fillers_count": 0,
- "fillers_sum": 0,
- "padding_pes_count": 0,
- "padding_pes_sum": 0,
- "crashed": 0,
- "dts_goes_backwards": 0,
- "dts_jump_forward": 0,
- "too_large_dts_jump": 0
}
], - "rtp_channels": [
- {
- "channel_id": 0,
- "content": "video",
- "rtp_packets": 0,
- "rtcp_packets": 0,
- "bytes": 0,
- "frames": 0,
- "pt_reject_count": 0,
- "pt_reject_sum": 0,
- "ts_goes_backwards": 0,
- "ts_jump_forward": 0,
- "ts_stuck": 0,
- "errors_dts_stuck": 0,
- "sr_ts_stuck": 0,
- "sender_clock_deviation": 0,
- "marker_packets_count": 0,
- "no_marker_mode_flag": true,
- "errors_broken_payload": 0,
- "errors_lost_packets": 0,
- "nal_count": 0,
- "discarded_broken_nal_count": 0,
- "discarded_not_allowed_nal_count": 0,
- "nal_fu_count": 0,
- "nal_stap_a_count": 0,
- "nal_aggregation_count": 0,
- "fu_pattern_is_broken_count": 0,
- "fu_has_both_start_end_bits_count": 0,
- "incomplete_nal_count": 0,
- "discarded_fu_count": 0,
- "fu_end_then_middle_workaround_count": 0,
- "nal_sei_count": 0,
- "invalid_sei_type_count": 0,
- "invalid_sei_size_count": 0,
- "invalid_sei_payload_count": 0,
- "discarded_sei_count": 0,
- "nal_idr_count": 0,
- "nal_single_count": 0,
- "nal_sps_count": 0,
- "nal_pps_count": 0,
- "nal_aud_count": 0,
- "nal_filler_count": 0,
- "nal_slice_count": 0,
- "nal_vps_count": 0,
- "nal_other_count": 0,
- "discarded_nal_count": 0
}
], - "errors_ts_service_lost": 0,
- "errors_ts_stuck_restarts": 0,
- "errors_404": 0,
- "errors_403": 0,
- "errors_500": 0,
- "errors_crashed": 0,
- "sdi": {
- "errors_no_signal": 0,
- "errors_duplicate": 0,
- "errors_ts_duplicate": 0,
- "errors_cpu_stall": 0,
- "peak_duration_deviation": 0,
- "avg_recv_duration": 0
}
}, - "user_agent": "string",
- "via": "string",
- "output_audio": "keep",
- "headers": {
- "User-Agent": "curl/7.85.0",
- "Authorization": "Basic dXNlcjpwYXNzd29yZA=="
}, - "no_clients_reconnect_delay": 0,
- "allow_if": "string",
- "deny_if": "string",
- "bind_ip": "string",
- "mbr": "string"
}
], - "password": "string",
- "input_media_info": {
- "tracks": [
- {
- "match": {
- "language": "eng",
- "codec": "ac3",
- "index": 2
}, - "track_id": "v1",
- "frame_duration": 0,
- "avg_fps": 0,
- "bandwidth": 2600,
- "content": "audio",
- "title": "Video1",
- "bitrate": 2543,
- "pid": 8191,
- "codec": "h264",
- "last_gop": 28,
- "avg_gop": 25,
- "length_size": 2,
- "is_progressive": true,
- "closed_captions": [ ],
- "width": 0,
- "height": 0,
- "fps": 0,
- "pix_fmt": "yuv420p",
- "num_refs_frames": 32,
- "sar_width": 1,
- "sar_height": 1,
- "pixel_width": 0,
- "pixel_height": 0,
- "level": "string",
- "profile": "string",
- "bframes": 3,
- "gop_size": 0
}
], - "provider": "Netflix",
- "title": "Bunny",
- "stream_id": 253,
- "program_id": 110
}, - "provider": "SportsTV",
- "dvbocr": "replace",
- "source_timeout": 10,
- "video_timeout": 20,
- "audio_timeout": 20,
- "max_retry_timeout": 30,
- "silencedetect": {
- "duration": 20,
- "interval": 10,
- "noise": -30
}, - "motion_detector": {
- "enabled": true,
- "pull": "string"
}, - "backup": {
- "file": "vod/blank.mp4",
- "timeout": 10,
- "audio_timeout": 5,
- "video_timeout": 4,
- "transcode": true,
- "dvr": true
}, - "epg_enabled": true,
- "nomedia": false,
- "mpegts_ac3": "keep",
- "clients_timeout": 485,
- "retry_limit": 0,
- "transcoder": {
- "global": {
- "target": "uhdtv",
- "hw": "cpu",
- "deviceid": "auto",
- "external": true,
- "keep_ts": true,
- "fps": 24,
- "gop": 150,
- "resize_mode": "vic",
- "burn": {
- "text": {
- "text": "string",
- "x": 0,
- "y": 0,
- "position": "tl",
- "font": {
- "file": "/usr/share/fonts/truetype/freefont/FONT_NAME.ttf",
- "size": 24,
- "color": "string",
- "alpha": 1
}, - "box": {
- "borderw": 10,
- "color": "string",
- "alpha": 0
}
}, - "time": {
- "text": "string",
- "x": 0,
- "y": 0,
- "position": "tl",
- "font": {
- "file": "/usr/share/fonts/truetype/freefont/FONT_NAME.ttf",
- "size": 24,
- "color": "string",
- "alpha": 1
}, - "box": {
- "borderw": 10,
- "color": "string",
- "alpha": 0
}
}
}
}, - "decoder": {
- "pix_fmt": "yuv420p",
- "deinterlace": true,
- "deinterlace_rate": "frame",
- "crop": {
- "left": 0,
- "top": 0,
- "width": 0,
- "height": 0
}, - "drop_frame_interval": 3,
- "no_dpb": false,
- "streaming_frame": false
}, - "audio": {
- "codec": "opus",
- "bitrate": 64000,
- "avol": "-6dB",
- "split_channels": false,
- "sample_rate": 48000,
- "channels": 2
}, - "video": [ ],
- "tracks": [ ]
}, - "logo": {
- "height": 100,
- "width": 200,
- "left": 15,
- "top": 15,
- "right": 0,
- "bottom": 0
}, - "jpeg_snapshot_sign_key": "string",
- "dvr": {
- "reference": "localdvr0",
- "remotes": [
- "string"
], - "storage_limit": 400000000000,
- "expiration": 0,
- "episodes_expiration": 0,
- "episodes_url": "string",
- "dvr_replicate": true,
- "replication_speed": 0,
- "replication_port": 8002,
- "schedule": [
- [
- 800,
- 1600
], - [
- 2200,
- 130
]
], - "dvr_offline": true,
- "copy": "s3://token@minio.mycompany.com/dvr-bucket"
}, - "on_play": {
- "domains": [
- "mycompany.com"
], - "max_sessions": 5000,
- "allowed_countries": [
- "US",
- "DE",
- "GB"
], - "disallowed_countries": [
- "US",
- "DE",
- "GB"
], - "soft_limitation": false,
- "session_keys": [
- "name",
- "token",
- "proto",
- "ip"
], - "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "on_publish": {
- "domains": [
- "mycompany.com"
], - "max_sessions": 5000,
- "allowed_countries": [
- "US",
- "DE",
- "GB"
], - "disallowed_countries": [
- "US",
- "DE",
- "GB"
], - "soft_limitation": false,
- "session_keys": [
- "name",
- "token",
- "proto",
- "ip"
], - "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "drm": {
- "vendor": "string",
- "hls_ext_x_key_iv": true,
- "resource_id": "L2sItm6",
- "expires": 0,
- "encryption": "full",
- "save_template": "save_template=/var/log/flussonic/drm/$name$-$type$-$now$.xml",
- "dump_url": true
}, - "protocols": {
- "whitelist": false,
- "hls": true,
- "cmaf": true,
- "dash": true,
- "player": true,
- "mss": true,
- "rtmp": true,
- "rtsp": true,
- "m4f": true,
- "m4s": true,
- "mseld": true,
- "tshttp": true,
- "webrtc": true,
- "srt": true,
- "shoutcast": true,
- "mp4": true,
- "jpeg": true,
- "api": true
}, - "prepush": false,
- "cmaf_enabled": true,
- "segment_count": 4,
- "segment_duration": 5000,
- "chunk_duration": 200,
- "dash_update_period": 270000000,
- "url_prefix": false,
- "hls_scte35": "scte35",
- "add_audio_only": true,
- "substyle": {
- "align": "middle",
- "valign": "bottom"
}, - "webrtc_abr": {
- "start_track": "v2",
- "loss_count": 2,
- "up_window": 17,
- "down_window": 6,
- "ignore_remb": true,
- "bitrate_prober": true,
- "bitrate_probing_interval": 6
}, - "pushes": [
- {
- "url": "string",
- "service": "My service",
- "domain": "officialdomain.com",
- "encoder": "Lavf57",
- "comment": "This is a test push",
- "stats": {
- "url": "string",
- "opened_at": 1000000000000,
- "status": "starting",
- "standby_status": "active",
- "bytes": 0,
- "frames": 0,
- "segments": 0,
- "pusher_restarts": 0,
- "errors_stop_overloaded": 0,
- "errors_dropped_frames": 0,
- "errors_dropped_segments": 0,
- "pids": [
- {
- "pid": 0,
- "pnr": 0,
- "packets": 0,
- "payload_bytes": 0,
- "fillers_bytes": 0,
- "stuffing_packets": 0,
- "trimmed_bytes": 0,
- "trimmed_frames": 0
}
], - "sys_fillers_bytes": 0,
- "sys_payload_bytes": 0,
- "sys_stuffing_packets": 0,
- "encoded_bytes": 0,
- "resent_packets": 0,
- "errors_device_not_opened": 0,
- "errors_device_buffer_overflow": 0,
- "errors_audio_frame_decode": 0,
- "errors_video_frame_decode": 0,
- "errors_no_destination": 0,
- "errors_tls": 0,
- "errors_connection_lost": 0,
- "errors_401": 0,
- "errors_403": 0,
- "errors_404": 0,
- "errors_409": 0,
- "errors_500": 0,
- "errors_redirect_limit": 0,
- "errors_not_authorized": 0,
- "genlock_status": "no_ref",
- "genref_status": {
- "port": 0,
- "external": true,
- "vstd": "pal",
- "vstd_detected": "pal"
}
}, - "retry_limit": 0,
- "retry_timeout": 7,
- "timeout": 10,
- "connect_timeout": 2,
- "disabled": true
}
], - "mpegts_pids": {
- "pmt": 8191,
- "pcr": 8191,
- "sdt": 8191,
- "media": [
- {
- "pid": 8191,
- "content": "audio",
- "codec": "scte35",
- "track": 1,
- "bitrate": 2543,
- "stream_type": 12,
- "es_info": "52010D",
- "stats": {
- "payload": 0,
- "fillers": 0,
- "stuffing": 0,
- "trimmed_bytes": 0,
- "trimmed_frames": 0
}
}
], - "default": "auto"
}, - "labels": {
- "key1": "value1",
- "key2": "value2"
}, - "playback_headers": [
- {
- "playback": "live",
- "protocols": {
- "whitelist": false,
- "hls": true,
- "cmaf": true,
- "dash": true,
- "player": true,
- "mss": true,
- "rtmp": true,
- "rtsp": true,
- "m4f": true,
- "m4s": true,
- "mseld": true,
- "tshttp": true,
- "webrtc": true,
- "srt": true,
- "shoutcast": true,
- "mp4": true,
- "jpeg": true,
- "api": true
}, - "headers": {
- "Cache-Control": "max-age=3600"
}, - "segment_headers": {
- "Cache-Control": "max-age=3600"
}
}
], - "debug_stream": {
- "ips": [
- "10.10.10.9"
], - "tracepoints": [
- "input",
- "stream",
- "webrtc_play_network"
], - "root": "/tmp/debug",
- "storage_limit": 400000000000,
- "expiration": 604800,
- "duration": 6000
}, - "cache": {
- "reference": "cache1",
- "misses": 3,
- "storage_limit": 400000,
- "expiration": 3600
}, - "vision": {
- "alg": "faces",
- "areas": "string"
}, - "srt_publish": {
- "port": 9050,
- "v": "srt1",
- "timeout": 10,
- "minversion": "1.1.0",
- "version": "1.3.0",
- "enforcedencryption": true,
- "passphrase": "9876543210",
- "linger": 15,
- "latency": 150,
- "streamid": "#!::r=my-stream,m=publish"
}, - "srt2_publish": {
- "port": 9050,
- "v": "srt1",
- "timeout": 10,
- "minversion": "1.1.0",
- "version": "1.3.0",
- "enforcedencryption": true,
- "passphrase": "9876543210",
- "linger": 15,
- "latency": 150,
- "streamid": "#!::r=my-stream,m=publish"
}
}
]
}
This API method will be called to fetch list of streams configurations for newly requested by user streams.
If you do not send a configuration of any stream named in name
query parameter,
it will be considered as an unknown and terminated immediately
host required | string Example: host=streamer03.my.cdn Hostname of the streamer server that is requesting the config. This parameter is mandatory, because streamer will send it and you can rely on it, but it is absolutely ok to create several paths for different servers and ignore this query string. |
name required | string Example: name=s01,s02,s03 Comma-separated expicitly passed list of stream names. Used to get configuration
for the streams that were not listed in previous request without |
cursor | string Example: cursor=JTI0cG9zaXRpb25fZ3Q9MQ== Properly encoded analog of offset, allowing to read next bunch of items.
We do not offer common |
{- "estimated_count": 5,
- "next": "JTI0cG9zaXRpb25fZ3Q9MA==",
- "prev": "JTI0cG9zaXRpb25fbHQ9MSYlMjRyZXZlcnNlZD10cnVl",
- "timing": { },
- "updated_at": 1727274724000,
- "streams": [
- {
- "name": "string",
- "comment": "This is a test stream",
- "title": "Hockey channel",
- "recheck_secondary_inputs_interval": 120,
- "static": true,
- "inputs": [
- {
- "url": "fake://fake",
- "width": 0,
- "height": 0,
- "bitrate": 0,
- "comment": "This is a test input",
- "source_timeout": 20,
- "audio_timeout": 20,
- "video_timeout": 20,
- "max_retry_timeout": 30,
- "timeout": 10,
- "frames_timeout": 3,
- "priority": 1,
- "stats": {
- "ip": "172.16.25.73",
- "proto": "dash",
- "opened_at": 1637094994000,
- "media_info": {
- "flow_type": "stream",
- "tracks": [ ],
- "duration": 0,
- "provider": "Netflix",
- "title": "Bunny",
- "stream_id": 253,
- "program_id": 110
}, - "ts_delay": 1284,
- "ts_delay_per_tracks": [
- 1284
], - "url": "udp://239.0.0.1:1234",
- "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML. like Gecko) Chrome/90.0.4430.72 Safari/537.36",
- "active": true,
- "dvr_info": {
- "from": 1641045644,
- "depth": 259200,
- "ranges": [
- {
- "from": 1525186456,
- "duration": 28800,
- "opened_at": 1000000000000,
- "closed_at": 1000000000000
}
], - "bytes": 129600000000,
- "disk_size": 1099511627776,
- "duration": 172800
}, - "bytes": 0,
- "frames": 0,
- "retries": 0,
- "media_info_changes": 0,
- "valid_secondary_inputs": 2,
- "invalid_secondary_inputs": 0,
- "resync_count_normal": 0,
- "resync_count_jump": 0,
- "resync_count_drift": 0,
- "reorder_count": 0,
- "ad_splices_ingested": 0,
- "ad_splices_inserted": 0,
- "srt": {
- "rtt": 0,
- "latency": 0,
- "packets": 0,
- "retransmitted_packets": 0,
- "error_lost_packets": 0,
- "error_dropped_packets": 0
}, - "onvif": {
- "motion_detected_count": 0,
- "errors_not_authorized_count": 0,
- "errors_url_unreachable_count": 0,
- "errors_no_service_count": 0,
- "errors_incorrect_time_values_count": 0
}, - "errors": 0,
- "errors_lost_packets": 0,
- "errors_decoder_reset": 0,
- "errors_broken_payload": 0,
- "errors_dropped_frames": 0,
- "errors_desync": 0,
- "errors_ts_pat": 0,
- "pids": [
- {
- "pid": 0,
- "pnr": 0,
- "packets": 0,
- "frames": 0,
- "empty_packets": 0,
- "errors_adaptation_broken": 0,
- "errors_ts_scrambled": 0,
- "errors_ts_pmt": 0,
- "errors_ts_cc": 0,
- "errors_ts_tei": 0,
- "errors_ts_psi_checksum": 0,
- "errors_pid_lost": 0,
- "broken_pes_count": 0,
- "broken_pes_sum": 0,
- "time_corrections": 0,
- "repeated_frames": 0,
- "corrected_backward_pts": 0,
- "pcr_resync": 0,
- "discarded_buffer_count": 0,
- "discarded_buffer_sum": 0,
- "fillers_count": 0,
- "fillers_sum": 0,
- "padding_pes_count": 0,
- "padding_pes_sum": 0,
- "crashed": 0,
- "dts_goes_backwards": 0,
- "dts_jump_forward": 0,
- "too_large_dts_jump": 0
}
], - "rtp_channels": [
- {
- "channel_id": 0,
- "content": "video",
- "rtp_packets": 0,
- "rtcp_packets": 0,
- "bytes": 0,
- "frames": 0,
- "pt_reject_count": 0,
- "pt_reject_sum": 0,
- "ts_goes_backwards": 0,
- "ts_jump_forward": 0,
- "ts_stuck": 0,
- "errors_dts_stuck": 0,
- "sr_ts_stuck": 0,
- "sender_clock_deviation": 0,
- "marker_packets_count": 0,
- "no_marker_mode_flag": true,
- "errors_broken_payload": 0,
- "errors_lost_packets": 0,
- "nal_count": 0,
- "discarded_broken_nal_count": 0,
- "discarded_not_allowed_nal_count": 0,
- "nal_fu_count": 0,
- "nal_stap_a_count": 0,
- "nal_aggregation_count": 0,
- "fu_pattern_is_broken_count": 0,
- "fu_has_both_start_end_bits_count": 0,
- "incomplete_nal_count": 0,
- "discarded_fu_count": 0,
- "fu_end_then_middle_workaround_count": 0,
- "nal_sei_count": 0,
- "invalid_sei_type_count": 0,
- "invalid_sei_size_count": 0,
- "invalid_sei_payload_count": 0,
- "discarded_sei_count": 0,
- "nal_idr_count": 0,
- "nal_single_count": 0,
- "nal_sps_count": 0,
- "nal_pps_count": 0,
- "nal_aud_count": 0,
- "nal_filler_count": 0,
- "nal_slice_count": 0,
- "nal_vps_count": 0,
- "nal_other_count": 0,
- "discarded_nal_count": 0
}
], - "errors_ts_service_lost": 0,
- "errors_ts_stuck_restarts": 0,
- "errors_404": 0,
- "errors_403": 0,
- "errors_500": 0,
- "errors_crashed": 0,
- "sdi": {
- "errors_no_signal": 0,
- "errors_duplicate": 0,
- "errors_ts_duplicate": 0,
- "errors_cpu_stall": 0,
- "peak_duration_deviation": 0,
- "avg_recv_duration": 0
}
}, - "user_agent": "string",
- "via": "string",
- "output_audio": "keep",
- "headers": {
- "User-Agent": "curl/7.85.0",
- "Authorization": "Basic dXNlcjpwYXNzd29yZA=="
}, - "no_clients_reconnect_delay": 0,
- "allow_if": "string",
- "deny_if": "string",
- "bind_ip": "string",
- "mbr": "string"
}
], - "password": "string",
- "input_media_info": {
- "tracks": [
- {
- "match": {
- "language": "eng",
- "codec": "ac3",
- "index": 2
}, - "track_id": "v1",
- "frame_duration": 0,
- "avg_fps": 0,
- "bandwidth": 2600,
- "content": "audio",
- "title": "Video1",
- "bitrate": 2543,
- "pid": 8191,
- "codec": "h264",
- "last_gop": 28,
- "avg_gop": 25,
- "length_size": 2,
- "is_progressive": true,
- "closed_captions": [ ],
- "width": 0,
- "height": 0,
- "fps": 0,
- "pix_fmt": "yuv420p",
- "num_refs_frames": 32,
- "sar_width": 1,
- "sar_height": 1,
- "pixel_width": 0,
- "pixel_height": 0,
- "level": "string",
- "profile": "string",
- "bframes": 3,
- "gop_size": 0
}
], - "provider": "Netflix",
- "title": "Bunny",
- "stream_id": 253,
- "program_id": 110
}, - "provider": "SportsTV",
- "dvbocr": "replace",
- "source_timeout": 10,
- "video_timeout": 20,
- "audio_timeout": 20,
- "max_retry_timeout": 30,
- "silencedetect": {
- "duration": 20,
- "interval": 10,
- "noise": -30
}, - "motion_detector": {
- "enabled": true,
- "pull": "string"
}, - "backup": {
- "file": "vod/blank.mp4",
- "timeout": 10,
- "audio_timeout": 5,
- "video_timeout": 4,
- "transcode": true,
- "dvr": true
}, - "epg_enabled": true,
- "nomedia": false,
- "mpegts_ac3": "keep",
- "clients_timeout": 485,
- "retry_limit": 0,
- "transcoder": {
- "global": {
- "target": "uhdtv",
- "hw": "cpu",
- "deviceid": "auto",
- "external": true,
- "keep_ts": true,
- "fps": 24,
- "gop": 150,
- "resize_mode": "vic",
- "burn": {
- "text": {
- "text": "string",
- "x": 0,
- "y": 0,
- "position": "tl",
- "font": {
- "file": "/usr/share/fonts/truetype/freefont/FONT_NAME.ttf",
- "size": 24,
- "color": "string",
- "alpha": 1
}, - "box": {
- "borderw": 10,
- "color": "string",
- "alpha": 0
}
}, - "time": {
- "text": "string",
- "x": 0,
- "y": 0,
- "position": "tl",
- "font": {
- "file": "/usr/share/fonts/truetype/freefont/FONT_NAME.ttf",
- "size": 24,
- "color": "string",
- "alpha": 1
}, - "box": {
- "borderw": 10,
- "color": "string",
- "alpha": 0
}
}
}
}, - "decoder": {
- "pix_fmt": "yuv420p",
- "deinterlace": true,
- "deinterlace_rate": "frame",
- "crop": {
- "left": 0,
- "top": 0,
- "width": 0,
- "height": 0
}, - "drop_frame_interval": 3,
- "no_dpb": false,
- "streaming_frame": false
}, - "audio": {
- "codec": "opus",
- "bitrate": 64000,
- "avol": "-6dB",
- "split_channels": false,
- "sample_rate": 48000,
- "channels": 2
}, - "video": [ ],
- "tracks": [ ]
}, - "logo": {
- "height": 100,
- "width": 200,
- "left": 15,
- "top": 15,
- "right": 0,
- "bottom": 0
}, - "jpeg_snapshot_sign_key": "string",
- "dvr": {
- "reference": "localdvr0",
- "remotes": [
- "string"
], - "storage_limit": 400000000000,
- "expiration": 0,
- "episodes_expiration": 0,
- "episodes_url": "string",
- "dvr_replicate": true,
- "replication_speed": 0,
- "replication_port": 8002,
- "schedule": [
- [
- 800,
- 1600
], - [
- 2200,
- 130
]
], - "dvr_offline": true,
- "copy": "s3://token@minio.mycompany.com/dvr-bucket"
}, - "on_play": {
- "domains": [
- "mycompany.com"
], - "max_sessions": 5000,
- "allowed_countries": [
- "US",
- "DE",
- "GB"
], - "disallowed_countries": [
- "US",
- "DE",
- "GB"
], - "soft_limitation": false,
- "session_keys": [
- "name",
- "token",
- "proto",
- "ip"
], - "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "on_publish": {
- "domains": [
- "mycompany.com"
], - "max_sessions": 5000,
- "allowed_countries": [
- "US",
- "DE",
- "GB"
], - "disallowed_countries": [
- "US",
- "DE",
- "GB"
], - "soft_limitation": false,
- "session_keys": [
- "name",
- "token",
- "proto",
- "ip"
], - "extra": {
- "property1": "string",
- "property2": "string"
}
}, - "drm": {
- "vendor": "string",
- "hls_ext_x_key_iv": true,
- "resource_id": "L2sItm6",
- "expires": 0,
- "encryption": "full",
- "save_template": "save_template=/var/log/flussonic/drm/$name$-$type$-$now$.xml",
- "dump_url": true
}, - "protocols": {
- "whitelist": false,
- "hls": true,
- "cmaf": true,
- "dash": true,
- "player": true,
- "mss": true,
- "rtmp": true,
- "rtsp": true,
- "m4f": true,
- "m4s": true,
- "mseld": true,
- "tshttp": true,
- "webrtc": true,
- "srt": true,
- "shoutcast": true,
- "mp4": true,
- "jpeg": true,
- "api": true
}, - "prepush": false,
- "cmaf_enabled": true,
- "segment_count": 4,
- "segment_duration": 5000,
- "chunk_duration": 200,
- "dash_update_period": 270000000,
- "url_prefix": false,
- "hls_scte35": "scte35",
- "add_audio_only": true,
- "substyle": {
- "align": "middle",
- "valign": "bottom"
}, - "webrtc_abr": {
- "start_track": "v2",
- "loss_count": 2,
- "up_window": 17,
- "down_window": 6,
- "ignore_remb": true,
- "bitrate_prober": true,
- "bitrate_probing_interval": 6
}, - "pushes": [
- {
- "url": "string",
- "service": "My service",
- "domain": "officialdomain.com",
- "encoder": "Lavf57",
- "comment": "This is a test push",
- "stats": {
- "url": "string",
- "opened_at": 1000000000000,
- "status": "starting",
- "standby_status": "active",
- "bytes": 0,
- "frames": 0,
- "segments": 0,
- "pusher_restarts": 0,
- "errors_stop_overloaded": 0,
- "errors_dropped_frames": 0,
- "errors_dropped_segments": 0,
- "pids": [
- {
- "pid": 0,
- "pnr": 0,
- "packets": 0,
- "payload_bytes": 0,
- "fillers_bytes": 0,
- "stuffing_packets": 0,
- "trimmed_bytes": 0,
- "trimmed_frames": 0
}
], - "sys_fillers_bytes": 0,
- "sys_payload_bytes": 0,
- "sys_stuffing_packets": 0,
- "encoded_bytes": 0,
- "resent_packets": 0,
- "errors_device_not_opened": 0,
- "errors_device_buffer_overflow": 0,
- "errors_audio_frame_decode": 0,
- "errors_video_frame_decode": 0,
- "errors_no_destination": 0,
- "errors_tls": 0,
- "errors_connection_lost": 0,
- "errors_401": 0,
- "errors_403": 0,
- "errors_404": 0,
- "errors_409": 0,
- "errors_500": 0,
- "errors_redirect_limit": 0,
- "errors_not_authorized": 0,
- "genlock_status": "no_ref",
- "genref_status": {
- "port": 0,
- "external": true,
- "vstd": "pal",
- "vstd_detected": "pal"
}
}, - "retry_limit": 0,
- "retry_timeout": 7,
- "timeout": 10,
- "connect_timeout": 2,
- "disabled": true
}
], - "mpegts_pids": {
- "pmt": 8191,
- "pcr": 8191,
- "sdt": 8191,
- "media": [
- {
- "pid": 8191,
- "content": "audio",
- "codec": "scte35",
- "track": 1,
- "bitrate": 2543,
- "stream_type": 12,
- "es_info": "52010D",
- "stats": {
- "payload": 0,
- "fillers": 0,
- "stuffing": 0,
- "trimmed_bytes": 0,
- "trimmed_frames": 0
}
}
], - "default": "auto"
}, - "labels": {
- "key1": "value1",
- "key2": "value2"
}, - "playback_headers": [
- {
- "playback": "live",
- "protocols": {
- "whitelist": false,
- "hls": true,
- "cmaf": true,
- "dash": true,
- "player": true,
- "mss": true,
- "rtmp": true,
- "rtsp": true,
- "m4f": true,
- "m4s": true,
- "mseld": true,
- "tshttp": true,
- "webrtc": true,
- "srt": true,
- "shoutcast": true,
- "mp4": true,
- "jpeg": true,
- "api": true
}, - "headers": {
- "Cache-Control": "max-age=3600"
}, - "segment_headers": {
- "Cache-Control": "max-age=3600"
}
}
], - "debug_stream": {
- "ips": [
- "10.10.10.9"
], - "tracepoints": [
- "input",
- "stream",
- "webrtc_play_network"
], - "root": "/tmp/debug",
- "storage_limit": 400000000000,
- "expiration": 604800,
- "duration": 6000
}, - "cache": {
- "reference": "cache1",
- "misses": 3,
- "storage_limit": 400000,
- "expiration": 3600
}, - "vision": {
- "alg": "faces",
- "areas": "string"
}, - "srt_publish": {
- "port": 9050,
- "v": "srt1",
- "timeout": 10,
- "minversion": "1.1.0",
- "version": "1.3.0",
- "enforcedencryption": true,
- "passphrase": "9876543210",
- "linger": 15,
- "latency": 150,
- "streamid": "#!::r=my-stream,m=publish"
}, - "srt2_publish": {
- "port": 9050,
- "v": "srt1",
- "timeout": 10,
- "minversion": "1.1.0",
- "version": "1.3.0",
- "enforcedencryption": true,
- "passphrase": "9876543210",
- "linger": 15,
- "latency": 150,
- "streamid": "#!::r=my-stream,m=publish"
}
}
]
}
This API method will be called to find stream name by the port which received srt connection.
SRT protocol has two modes: when no stream name is passed in protocol, or when it is passed, but only if passwords match on both sides.
So you cannot rely on a stream name, because it is either not passed, either is password protected.
When you build a cloud, you cannot offer the same password to all clients, because it is just the same like without password.
This method allows some dynamic configuration when you wait for a client on a pool of servers on a fixed UDP port. When connection comes (publish/ingress of play/egress), your configuration backend will be called for resolving this UDP port to a stream configuration. Streamer will find out what is the name of the stream, its password and all other settings.
port required | integer (network_port) [ 0 .. 65535 ] Example: 3000 Srt port which has received the connection |
{- "errors": [
- {
- "id": "string",
- "status": "string",
- "code": "string",
- "title": "string",
- "source": {
- "pointer": "string",
- "parameter": "string"
}, - "meta": {
- "property1": "string",
- "property2": "string"
}
}
], - "error": "string"
}
This method will return episodes for selected streams that should be left on disk during DVR cleaning process.
{- "estimated_count": 5,
- "next": "JTI0cG9zaXRpb25fZ3Q9MA==",
- "prev": "JTI0cG9zaXRpb25fbHQ9MSYlMjRyZXZlcnNlZD10cnVl",
- "timing": { },
- "episodes": [
- {
- "opened_at": 1637094994000,
- "updated_at": 1637098611000,
- "closed_at": 1637094994000
}
]
}