Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 1634099

Browse files
foltra-ncfoltra
authored andcommitted
SRT feature release update
1 parent 8387c75 commit 1634099

File tree

10 files changed

+229
-7
lines changed

10 files changed

+229
-7
lines changed

docs/assets/obs-srt-eu.png

15.1 KB
Loading

docs/assets/obs-srt-sa.png

17.2 KB
Loading

docs/assets/obs-srt-us.png

17.2 KB
Loading

docs/assets/obs-srt.png

202 KB
Loading

docs/cloud/cloud_overview.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ Live encoding/ingest is supported with:
4646

4747
- ingest with your own **H264/AAC/RTMP Live Encoders** (e.g. OBS, Wirecast, Hardware Encoders)
4848
- ingest with plugin-free web based **nanoStream Webcaster** broadcaster incl. screen sharing
49+
- ingest via protocols RTMP and SRT.
4950
- ingest with our **nanoStream Apps/SDKs** (nanoStream Apps for Win/Mac/iOS/Android),
50-
- other formats like RTSP, SRT available upon request
51+
- other formats like RTSP available upon request
5152

5253
## Live Playback with H5Live
5354
Live Playback is supported with our unique H5Live player. The same player code runs on all browsers.

docs/cloud/srt_ingest.md

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
---
2+
id: srt_ingest
3+
title: nanoStream Cloud SRT Ingest Guide
4+
sidebar_label: SRT Ingest
5+
---
6+
7+
# **Introduction**
8+
9+
Thank you for your interest in SRT (Secure Reliable Transport) streaming on nanoStream cloud. We are glad that you can start using this new feature.
10+
11+
> ## **Feedback**
12+
> We welcome any feedback that can help us improve the service. Send an email to [support@nanocosmos.de](mailto:support@nanocosmos.de) with subject **SRT feedback program** and do share with us the following information:
13+
> - Encoding or streaming software being used and hardware equipment setup.
14+
> - Video and audio encoding, or streaming parameters being used. For example: format, resolution, bit-rate, and so on.
15+
> - Full test results with description of expected outcomes and issues encountered.
16+
> - All issues reported must contain a time frame in UTC and relevant stream names.
17+
18+
19+
# **SRT Setup Guide**
20+
21+
The SRT setup will require creating a new stream or making use of an existing stream in your organization account for publishing and viewing. In this workflow, SRT streaming protocol will be used for ingest while playing back with H5Live player or RTMP protocol. *SRT playback* is not supported at the moment.
22+
23+
## **Ingest**
24+
25+
### Supported Formats and Codecs
26+
27+
| | |
28+
|-------------------|--------------------------------------------------------|
29+
| **Stream format** | MPEG-TS |
30+
| **Track count** | Single channel of video and/or single channel of audio |
31+
| **Video codec** | H.264 |
32+
| **Audio codec** | AAC |
33+
34+
### Server Domains and Port
35+
36+
| Global domain (preferred) | bintu-srt.nanocosmos.de |
37+
|---------------------------|----------------------------|
38+
| **Europe domain** | bintu-srt-eu.nanocosmos.de |
39+
| **North America domain** | bintu-srt-us.nanocosmos.de |
40+
| **South America domain** | bintu-srt-sa.nanocosmos.de |
41+
| **Port number** | 5000 |
42+
43+
### SRT Stream Id
44+
45+
SRT stream id format definition: `prefix:streamname[:postfix]`
46+
- prefix: `push` for ingest or publish action
47+
- streamname: existing Bintu stream name in the form `XXXXX-YYYYY`
48+
- suffix: `record` to enable VOD recording of a live stream (optional)
49+
50+
**Stream Id limitations**
51+
52+
- The SRT protocol specification limits the Stream Id length to 512 characters.
53+
- Allowed character set in SRT Stream Ids: `a-z`,`A-Z`,`0-9`,`?`,`&`,`=`,`-`,`_`,`,` plus delimiter `:`.
54+
- Colon delimiter `:` is permited on the stream id, **not** on stream name **nor** stream name parameters.
55+
- Percent sign `%` is only allowed in the context of URL encoding.
56+
57+
**Stream Id examples**
58+
59+
Replace `XXXXX-YYYYY` with an existing Bintu stream name.
60+
61+
Basic push: \
62+
`push:XXXXX-YYYYY`
63+
64+
Push with vod recording: \
65+
`push:XXXXX-YYYYY:record`
66+
67+
Push with stream name parameters: \
68+
`push:XXXXX-YYYYY?param1=one&param2=two`
69+
70+
Push with stream name parameters and VOD recording: \
71+
`push:XXXXX-YYYYY?param1=one&param2=two:record`
72+
73+
> **Note:**
74+
> Some streaming applications where the SRT stream id needs to be configured as part of a URL,
75+
> for example _OBS Studio_, may require the stream name parameters to use URL encoding.
76+
> The URL encoding can be applied to the entire Stream Id or stream name parameters only.
77+
> The URL encoded parts will be decoded accordingly on the server side.<br>
78+
> See the following examples:
79+
80+
Push with URL encoded stream id: <br>
81+
`push%3AXXXXX-YYYYY%3Fparam1%3Done%26param2%3Dtwo`
82+
83+
Push with URL encoded stream name parameters: <br>
84+
`push:XXXXX-YYYYY%3Fparam1%3Done%26param2%3Dtwo`
85+
86+
Push with URL encoded stream name parameters and VOD recording:<br>
87+
`push:XXXXX-YYYYY%3Fparam1%3Done%26param2%3Dtwo:record`
88+
89+
### Ingest Parameters
90+
91+
| | |
92+
|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
93+
| **SRT mode** | caller |
94+
| **SRT transmission type** | live |
95+
| **SRT latency** | Default is **500ms**. Higher values can be used to maintain more buffer and will help to reduce packet drop in lossy transmission situations. |
96+
| **SRT timeout** | Recommended is **1 second**. Higher values can solve connect issues in case of longer routing distances or high round trip times (RTT). |
97+
| **SRT stream id** | See [Above](#srt-stream-id). |
98+
99+
### Example of Setup using OBS Studio
100+
101+
OBS Studio is able to support SRT streaming in versions 25.0 or newer and has the flexibility of fine tuning capabilities.
102+
You can refer more here: [SRT Protocol Streaming Guide](https://obsproject.com/de/kb/srt-protocol-streaming-guide#stream-with-srt. "OBS SRT Protocol Streaming Guide")
103+
104+
> **Note:**<br>
105+
> OBS expects timeout and latency values in microseconds, that is, seconds ⨉ 1000000.
106+
107+
### Ingest Address
108+
#### **Global Ingest Domain (Recommended)**
109+
110+
Setup server with:
111+
```http
112+
srt://bintu-srt.nanocosmos.de:5000?mode=caller&latency=500000&timeout=1000000&transtype=live&streamid=push:XXXXX-YYYYY
113+
```
114+
115+
![](assets/obs-srt.png)
116+
117+
#### **For Europe Domain**
118+
119+
Setup server with:
120+
```http
121+
srt://bintu-srt-eu.nanocosmos.de:5000?mode=caller&latency=500000&timeout=1000000&transtype=live&streamid=push:XXXXX-YYYYY
122+
```
123+
124+
![](assets/obs-srt-eu.png)
125+
126+
#### **For North America Domain**
127+
128+
Setup server with:
129+
```http
130+
srt://bintu-srt-us.nanocosmos.de:5000?mode=caller&latency=500000&timeout=1000000&transtype=live&streamid=push:XXXXX-YYYYY
131+
```
132+
133+
![](assets/obs-srt-us.png)
134+
135+
#### **For South America Domain**
136+
137+
Setup server with:
138+
```http
139+
srt://bintu-srt-sa.nanocosmos.de:5000?mode=caller&latency=500000&timeout=1000000&transtype=live&streamid=push:XXXXX-YYYYY
140+
```
141+
142+
![](assets/obs-srt-sa.png)
143+
144+
Whereby `XXXXX-YYYYY` is an existing Bintu stream name in your organization account and `latency`, and`timeout` values provided in **microseconds**.
145+
146+
### **Stream Transcoding and ABR**
147+
148+
If your organization account has transcoding feature enabled you may set up ABR with SRT. Just use the pass-through stream name for SRT ingest.
149+
150+
## **Playback**
151+
152+
SRT playback is not supported at the moment.
153+
Playback is possible using the H5live Player or through RTMP protocol.
154+
155+
### **Using H5Live Player**
156+
157+
For a single bit-rate stream, the ingested stream can be played out with the following playback URL:
158+
159+
160+
```http
161+
https://demo.nanocosmos.de/nanoplayer/release/nanoplayer.html?entry.rtmp.streamname=XXXXX-YYYYY
162+
```
163+
164+
Whereby `XXXXX-YYYYY` is the Bintu stream name previously set up for SRT ingest.
165+
166+
For ABR playback, you can setup a stream group on the latest dashboard v3.
167+
Find more information following the video guide in the link:
168+
169+
[How To Setup Streamgroups Through V3 Dashboard](./how_to_setup_streamgroups.md)
170+
171+
For the corresponding stream group setup, find the player configuration here:
172+
173+
[Stream group configuration](../nanoplayer/nanoplayer_feature_stream_group_configuration.md)
174+
175+
If you are on a secure Bintu organization account, you will find information on playback with secure parameters here:
176+
177+
[Secure playback with H5Live](../nanoplayer/nanoplayer_token_security.md)
178+
179+
### **Using RTMP**
180+
181+
Following, an example using RTMP protocol playback with _ffplay_ from the _ffmpeg_ project on the command line:
182+
183+
```sh
184+
ffplay rtmp://bintu-play.nanocosmos.de/play/XXXXX-YYYYY
185+
```
186+
Whereby `XXXXX-YYYYY` is the Bintu stream name that was configured in the SRT ingest.

docs/nanomeet/samples.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ You need a nanoStream Cloud/Bintu account with nanoMeet enabled.
4242
4343
This sample lets you intialize your created nanoMeet room. If you dont use this sample as a moderator but as a participant you will not be able to see the "Moderator Functions" like "Invite Participant", "Security Options" and "Broadcast Settings".
4444

45-
![nanoMeet Meeting](assets/nanomeet-meeting.jpg)
45+
![nanoMeet Meeting](assets/nanomeet-meeting.jpg)

prepare-assets.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
mkdir -p docs/assets
22
cp -n docs/cloud-frontend/assets/* docs/assets/
33
cp -n docs/nanomeet/assets/* docs/assets/
4+
cp -n docs/test-programs/srt/assets/* docs/assets/

website/i18n/en.json

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
"cloud-frontend/How_to_Log_in_to_the_nanoStream_Cloud": {
1919
"title": "cloud-frontend/How_to_Log_in_to_the_nanoStream_Cloud"
2020
},
21+
"cloud-frontend/How_to_Setup_Low_Latency_Stream": {
22+
"title": "How to Setup a Low Latency Stream",
23+
"sidebar_label": "How to Setup a Low Latency Stream"
24+
},
2125
"cloud-frontend/How_to_Start_a_Stream": {
2226
"title": "How to start a stream",
2327
"sidebar_label": "Start streaming"
@@ -50,6 +54,10 @@
5054
"title": "Cloud Dashboard Overview",
5155
"sidebar_label": "Cloud Dashboard Overview"
5256
},
57+
"cloud/analytics_for_low_latency_streams": {
58+
"title": "Analytics For Low Latency Streams",
59+
"sidebar_label": "Analytics For Low Latency Streams"
60+
},
5361
"cloud/analytics-api": {
5462
"title": "nanoStream Cloud Analytics",
5563
"sidebar_label": "Analytics API"
@@ -86,10 +94,22 @@
8694
"title": "iOS Streaming App in 5 Minutes",
8795
"sidebar_label": "iOS Streaming App in 5 Minutes"
8896
},
97+
"cloud/cloud_news": {
98+
"title": "nanoStream Cloud Latest News",
99+
"sidebar_label": "Latest News"
100+
},
89101
"cloud/cloud_overview": {
90102
"title": "nanoStream Cloud Product and Services Overview",
91103
"sidebar_label": "Overview"
92104
},
105+
"cloud/how_to_setup_ingest_security": {
106+
"title": "How To Setup Ingest Security For Your Live Streams",
107+
"sidebar_label": "How To Setup Ingest Security For Your Live Streams"
108+
},
109+
"cloud/how_to_setup_streamgroups": {
110+
"title": "How To Setup Streamgroups Through V3 Dashboard",
111+
"sidebar_label": "How To Setup Streamgroups Through V3 Dashboard"
112+
},
93113
"cloud/live_encoding": {
94114
"title": "Live Encoding",
95115
"sidebar_label": "Live Encoding"
@@ -105,14 +125,14 @@
105125
"title": "Network Diagnostics",
106126
"sidebar_label": "Network Diagnostics"
107127
},
108-
"cloud/cloud_news": {
109-
"title": "nanoStream Cloud Latest News",
110-
"sidebar_label": "Latest News"
111-
},
112128
"cloud/security": {
113129
"title": "nanoStream Cloud Security",
114130
"sidebar_label": "nanoStream Cloud Security"
115131
},
132+
"cloud/srt_ingest": {
133+
"title": "nanoStream Cloud SRT Ingest Guide",
134+
"sidebar_label": "SRT Ingest"
135+
},
116136
"cloud/support": {
117137
"title": "Support",
118138
"sidebar_label": "Support"
@@ -290,6 +310,10 @@
290310
"title": "Stream switching and ABR",
291311
"sidebar_label": "Stream switching and ABR"
292312
},
313+
"nanoplayer/nanoplayer_feature_video_access_and_processing": {
314+
"title": "Video Access and Processing",
315+
"sidebar_label": "Video Access and Processing"
316+
},
293317
"nanoplayer/nanoplayer_getting_started": {
294318
"title": "Getting started",
295319
"sidebar_label": "Getting started"
@@ -331,6 +355,14 @@
331355
"title": "Secure playback with H5Live",
332356
"sidebar_label": "Secure playback with H5Live"
333357
},
358+
"nanoplayer/nanoplayer_tutorial_how_to_setup_latency_modes": {
359+
"title": "How to Setup Optimal Latency Modes for Streaming",
360+
"sidebar_label": "How to Setup Optimal Latency Modes for Streaming"
361+
},
362+
"nanoplayer/nanoplayer_tutorial_how_to_setup_player_security": {
363+
"title": "Implement Playback Security For Your Live Streams",
364+
"sidebar_label": "Implement Playback Security For Your Live Streams"
365+
},
334366
"nanoplayer/nanoplayer_update_source": {
335367
"title": "update source",
336368
"sidebar_label": "update source"
@@ -782,6 +814,7 @@
782814
"Cloud Dashboard": "Cloud Dashboard",
783815
"Bintu API": "Bintu API",
784816
"Support": "Support",
817+
"Video Tutorials": "Video Tutorials",
785818
"nanoStream SDKs/Apps": "nanoStream SDKs/Apps",
786819
"Android": "Android",
787820
"iOS": "iOS",

website/sidebars.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@
7676
"cloud": {
7777
"nanoStream Cloud": [
7878
"cloud/cloud_overview",
79-
"cloud/cloud_news",
79+
"cloud/cloud_news",
8080
"cloud/cloud_introduction",
8181
"cloud/cloud_getting_started",
8282
"cloud/live_encoding",
83+
"cloud/srt_ingest",
8384
"cloud/live-recording-vod",
8485
"cloud/security",
8586
{

0 commit comments

Comments
 (0)