Haivision / srt

Secure, Reliable, Transport
https://www.srtalliance.org
Mozilla Public License 2.0
3.06k stars 840 forks source link

[FR]add a new format of url for srt live streaming #1125

Open Edward-Wu opened 4 years ago

Edward-Wu commented 4 years ago

This issue is only for live streaming.

In the official doc(https://github.com/Haivision/srt/blob/master/docs/AccessControl.md), there is a recommended format of url, which is suitable for using srt seperately. In the actual application scenario, srt often is used with other net streaming protocols at the same time, such as rtmp or hls. and switching between multiple protocols according network condition.

At present, the url format about rtmp and hls is often as below in the majority of cases for the same stream : rtmp://your.domain.name/live/stream_name http://your.domain.name/live/stream_name.m3u8

To facilitate protocol switching and the promotion of srt, it is suggested to add a srt url format as follows: srt://your.domain.name:port/live/stream_name The whole format is compatible with http url format, we can add custom parameter with '?', as follows: srt://your.domain.name:port/live/stream_name?user_name=abac&pwd=111222

To distinguish push and play streaming, the different domain or app name is used. different domain as follows: push: srt://your.push_domain.name:port/live/stream_name play: srt://your.play_domain.name:port/live/stream_name

different app name as follows: push: srt://your.domain.name:port/uplive/stream_name play: srt://your.domain.name:port/live/stream_name

Switching of different streaming media protocols often occurs in China's network environment and business applications. Therefore, it is recommended to add the above SRT URL format. It is hoped that SRT will be applied in more and more fields.

Edward-Wu commented 4 years ago

Additional explanation, the whole url will be assigned into stream_id also : stream_id=your.domain.name:port/live/stream_name?......

notedit commented 4 years ago

It will be great the url schema can be matched with rtmp.

hydah commented 4 years ago

Good point. The compatibility will also ease the road of srt.

wangzf100 commented 4 years ago

A nice idea for SRT resource identifier.

maxsharabayko commented 4 years ago

Putting this to a parking lot. Something to consider.

winlinvip commented 3 years ago

Is this feature supported? Seems assigned to v1.4.2 and it's closed. 😁

RTMP or HTTP url is defined by https://datatracker.ietf.org/doc/html/rfc3986

maxsharabayko commented 3 years ago

That's something to consider for the Access Control Guidelines or for the SRT RFC. Handling of URIs like the following is currently not defined

srt://your.domain.name:port/live/stream_name?user_name=abac&pwd=111222

Following the Access Control Guidelines, a resource name r=stream_name can be extracted from this URI and appended into the StreamID. However, it is also a bit use-case-specific, and might not fit the general use case well.

Not sure why did Edward close it. But at the same time, probably it is more for an SRT-based solution to define or propose, like e.g. srt-live-server by Edward.

Note

URI parsing is expected to be done at the application level. SRT library API expects sockaddr, e.g. see srt_connect(..). There is an idea to make a helper library to parse SRT URI (#445, #830). Currently parsing is done by the UriParser class.

Edward-Wu commented 3 years ago

look forward to supporting this feature in the next version, thanks.