Usually, RTMP URI is set by two parts: server URI and stream id (or stream key). But some apps support combined URI, which includes both parts concatenated via slash. VASTreaming library supports only combined URI format.
Example of separate server URI / stream id format:
Server URI: rtmp://a.rtmp.youtube.com/live2
Stream id: blah-blah-blah
Combined RTMP URI format is the following:
where <server-name> is IP address or domain name of a server,
<server-port> can be skipped if it uses default RTMP port 1935,
<application> is a virtual entity of RTMP protocol, usually, it is a part of server URI,
<stream-id> is a unique stream identifier,
<stream-parameters> - an optional list of parameters of a stream.
Since RTMP standard does not explicitly divide definitions of application and stream ID in URI, collisions may occur in case of working with some third-party servers. Some third-party servers also require parameters for both application and stream id. In order to solve this problem, VASTreaming library supports extended RTMP URI format.
Beware that below format is specific to VASTreaming library only!
Extended RTMP URI format is the following:
So, <server-parameters> and <stream-parameters> can be set independently.
Note that server URI and stream id are divided by | character (vertical bar).
While connecting external server, there is a possibility to set several parameters to tune VASTreaming library. These parameters are not propagated to external server. If original URI does not contain parameter string, format of URI is as follows:
Example of original server URI:
The same URI with VASTreaming library parameter:
Format of URI if original URI already has parameter string:
The following internal parameters are supported (sorted in alphabetical order):
FlvSink implements IMediaSink and intended for writing a stream into a FLV file.
RtmpClientSource implements INetworkSource interface and intended for creating a source which pulls data from an RTMP server.
RtmpPublisherSink is an object implementing INetworkSink interface and intended for creating a sink which pushes data to an external RTMP server.
RtmpServer implements RTMP server protocol and can work both stand-alone and as a part of a multi-protocol streaming server.
RtmpServerParameters contains additional parameters for creating an RTMP server.