TS over RIST
Real time streaming of TS data over RIST
Pushing/Recording
The following push targets are matched by this output:
rist://*
TSRIST Optional configurations
Option | Description | Type | Default | API | Commandline |
---|---|---|---|---|---|
MPEG Data track parser | Which parser to use for data tracks | = None / disabled json = 2b size-prepended JSON | datatrack | --datatrack | |
debug | The debug level at which messages need to be printed. | debug | Inherited from parent process | debug | --debug |
Default track sorting | What tracks are selected first when no specific track selector is used for playback. | = Default (last added for live, first added for VoD) bps_lth = Bit rate, low to high bps_htl = Bit rate, high to low id_lth = Track ID, low to high id_htl = Track ID, high to low res_lth = Resolution, low to high res_htl = Resolution, high to low | default_track_sorting | --default_track_sorting | |
RIST profile | RIST profile to use | 0 = Simple 1 = Main | 1 | profile | --profile |
Stream | What streamname to serve if no streamid is given by the other end of the connection | String | streamname | --stream | |
Username | Username to drop privileges to - default if unprovided means do not drop privileges | String | root | username | --username |
TSRIST Push parameters
Option | Description | Type | Default | API | Commandline |
---|---|---|---|---|---|
**** | String | undefined | |||
AES Type | Specifies the specific encrytion. Specify "128" for AES-128 or "256" for AES-256. Remember that you must also specify the pass phrase, and that encryption is not supported for the simple protocol at all. | Number (signed integer) | 0 | aes-type | undefined |
Append to file | If set to any value, will (if possible) append to an existing file, rather than overwriting it | Boolean | Unset | append | undefined |
Audio track(s) | Override which audio tracks of the stream should be selected | string | Unset | audio | undefined |
Bandwidth | Sets the maximum bandwidth in Kbps. It is necessary to configure the bandwidth to be higher than the max bandwidth of your stream(s). This is in order to allow room for messaging headroom, plus the re-requested packets. When tuning a connection for the first time, analyze your stream statistics locally at first, then start at 10% higher for a constant bitrate, 100% higher for variable bitrate. Especially for VBR, provide generous "headroom" in your bandwidth. You can always reduce it when configuring and tuning the connection. | Number (signed integer) | 0 | bandwidth | undefined |
Buffer size | Sets the buffer size in milliseconds. The buffer size will work best at four to seven times the ping time. | Number (signed integer) | 0 | buffer | undefined |
Cacnonical name | Provides a canonical name for the media. If multi-plexing more than one stream through a tunnel, this provides a convenient way to identify a particular stream within the log. You should make it standard practice to assign a cononical name whenever multi-plexing. | String | cname | undefined | |
Compression | Utilizes liblz4 to compress all traffic in the GRE tunnel | 0 = False 1 = True | 0 | compression | undefined |
Congestion control | The three options for this parameter are 0=disabled, 1=normal and 2=aggressive. In general, don't set the parameter to "aggressive" unless you've definitely established that congestion is a problem. | Number (signed integer) | 0 | congestion-control | undefined |
Duration of push | How much media time to push, in seconds. Internally overrides "recstop" | Number (signed integer) | Unset | duration | undefined |
Keepalive interval | Time in milliseconds between pings. As is standard practice for GRE tunnels, the keep alive helps ensure the tunnel remains connected and open should no media be traversing it at a given time. | Number (signed integer) | 0 | keepalive-interval | undefined |
Key rotation interval | Sets the key rotation period in milliseconds when aes and a passphrases are specified. | Number (signed integer) | 0 | key-rotation | undefined |
Playlist path (relative to segments) | If set, will write a m3u8 playlist file for the segments to the given path (relative from the first segment path). When this parameter is used, at least one of the variables $segmentCounter or $currentMediaTime must be part of the segment path (to keep segments from overwriting each other). The "Split interval" parameter will default to 60 seconds when using this option. | string | Unset | m3u8 | undefined |
Maximum retries | Sets a maximum number of re-requests for a lost packet. | Number (signed integer) | 0 | max-retries | undefined |
Playlist max entries | When writing a playlist, delete oldest segment entries once this entry count has been reached (and, if possible, also delete said segments themselves). When set to 0 or left empty, does not delete. | Number (signed integer) | Unset | maxEntries | undefined |
Max buffer duration for GOP count wait | When waiting for GOPs on the main track, give up when this much data is available in the main track buffer | Number (signed integer) | 5s, or 120s when using a non-default GOP count | maxwaittrackms | undefined |
Minimum retries | Sets a minimum number of re-requests for a lost packet. Note that setting this too high can lead to congestion. Regardless of this setting, the size of the buffer and the roundtrip time will render too high a minimum value here irrelevant. | Number (signed integer) | 0 | min-retries | undefined |
RIST profile | RIST profile to use | 0 = Simple 1 = Main | 1 | profile | undefined |
Push delay | Ensures the stream is always delayed by at least this many seconds. Internally overrides the "realtime" and "start" parameters | Number (signed integer) | Unset | pushdelay | undefined |
Playback rate | Multiplier for the playback speed rate, or 0 to not limit | Number (signed integer) | 1 | rate | undefined |
Don't speed up output | If set to any value, removes the rate override to unlimited normally applied to push outputs | Boolean | Unset | realtime | undefined |
Media timestamp to start from | What internal media timestamp to start from | Number (signed integer) | Unset | recstart | undefined |
Unix timestamp to start from | What unix timestamp to start from | unixtime | Unset | recstartunix | undefined |
Media timestamp to stop at | What internal media timestamp to stop at | Number (signed integer) | Unset | recstop | undefined |
Unix timestamp to stop at | What unix timestamp to stop at | unixtime | Unset | recstopunix | undefined |
Reorder buffer | Sets the size for a secondary buffer in which after all re=requested packets have been received, the out-of-order packets are released in the correct order. in most cases there should be no need to adjust this setting, but it may be helpful in conjuction with very long distance/large buffer/poor network conditions. | Number (signed integer) | 0 | reorder-buffer | undefined |
Return bandwidth | Sets the maximum bandwidth in Kbps for just the receiver-to-sender direction. This is an option which may sometimes help avoid congestion insofar as it may limit re-request messages in poor network conditions. | Number (signed integer) | 0 | return-bandwidth | undefined |
Maximum Round Trip Time | Sets the maximum rtt setting in milliseconds. See rtt-min for a more complete description. in most cases, minimum and maximum should be set to be equal to one another. | Number (signed integer) | 0 | rtt-max | undefined |
Minimum Round Trip Time | Sets the minimum rtt setting in milliseconds. This can help reduce congestion by reducing the number of repeated re-requests in poor network conditions. More importantly, for very long-distance or connections that traverse under-sea cables, it may be important to adjust this setting. | Number (signed integer) | 0 | rtt-min | undefined |
Passphrase | Sets the specified passphrase for Main or Advanced profile encryption. Note that simple protocol does not support encryption, and that you must in addition to the passphrase specify the "AES Type" parameter. The rotating keys shall be placed inside the rtcp messages, using your passphrase as the pre-shared key. Be sure that the passphrase for sender and receiver match! | String | secret | undefined | |
Session timeout | Terminates the RIST connection after inactivity/lack of keepalive response for the limit (in milliseconds) which you set with this parameter. | Number (signed integer) | 0 | session-timeout | undefined |
Split interval | Performs a gapless restart of the recording every this many seconds. Always aligns to the next keyframe after this duration, to ensure each recording is fully playable. When set to zero (the default) will not split at all. | Number (signed integer) | Unset | split | undefined |
Media timestamp to start from | What internal media timestamp to start from | Number (signed integer) | Unset | start | undefined |
Unix timestamp to start from | What unix timestamp to start from | unixtime | Unset | startunix | undefined |
Media timestamp to stop at | What internal media timestamp to stop at | Number (signed integer) | Unset | stop | undefined |
Unix timestamp to stop at | What unix timestamp to stop at | unixtime | Unset | stopunix | undefined |
Stream ID | Sets the encapsulated udp destination port, this must be even. | Number (signed integer) | 0 | stream-id | undefined |
Subtitle track(s) | Override which subtitle tracks of the stream should be selected | string | Unset | subtitle | undefined |
Playlist target age | When writing a playlist, delete segment entries that are more than this many seconds old from the playlist (and, if possible, also delete said segments themselves). When set to 0 or left empty, does not delete. | Number (signed integer) | Unset | targetAge | undefined |
Unmask tracks | If set to any value, removes any applied track masking before selecting tracks, acting as if no mask was applied at all | Boolean | Unset | unmask | undefined |
Video track(s) | Override which video tracks of the stream should be selected | string | Unset | video | undefined |
Virtual destination port | The port within the GRE tunnel. This has nothing to do with the media port(s). If the GRE is device /dev/tun11, having an address of 1.1.1.2, and the virtual destination port is 10000, and your media is using port 8193/4, the operating system will use 1.1.1.2:10000 as the destination from the sender's point of view, or the inbound on the receiver's point of view. libRIST will make use of that device/IP/port. As far as your media source and media player are concerned, the media is on ports 8193/4 on their respective interfaces. The media knows nothing of the tunnel. | Number (signed integer) | 0 | virt-dst-port | undefined |
Wait for GOP count | Before starting, wait until this number of GOPs is available in the main selected track | Number (signed integer) | 2 | waittrackcount | undefined |
Path weight | Sets the relative share for load balanced connections. The best way to describe this will be to provide an example. The default is five, so in a setup where two paths are given weights of 5 and 10 respectively, the former would receive 1/3 of packets sent, and the latter would receive 2/3. | Number (signed integer) | 0 | weight | undefined |