Multiplex Provider (Configuring ABR with external encoder) #1489
Replies: 4 comments 5 replies
-
Great work! I did a test with 2 simple input streams and I would like to ask a few simple questions:
Many thanks in advance. |
Beta Was this translation helpful? Give feedback.
-
How would this work with OriginMapStore? I am currently in production, at scale using Wowza Streaming Engine, and multiplexing is one of main reasons why I am on WSE as they have very mature implementation for it. I see this as a must have feature for mostly larger deployments, hence, OriginMapStore functionality needs to be work nicely together with this. Consider architecture, where there is TCP LoadBalancer -> Pool of Origin servers <- OriginMapStore -> Pool of Edge servers. |
Beta Was this translation helpful? Give feedback.
-
This feature was officially released in 0.16.5. |
Beta Was this translation helpful? Give feedback.
-
This feature is really great! I had a question/suggestion: would it be possible to manage multi-track audio sent via SRT, something like this at the XML level? <TrackMap>
<Track>
<SourceTrackName>bypass_video</SourceTrackName>
<NewTrackName>tv1_video</NewTrackName>
</Track>
<Track>
<SourceTrackName>bypass_audio</SourceTrackName>
<SourceAudioTrack>0</SourceAudioTrack>
<NewTrackName>tv1_en</NewTrackName>
</Track>
<Track>
<SourceTrackName>bypass_audio</SourceTrackName>
<SourceAudioTrack>1</SourceAudioTrack>
<NewTrackName>tv1_ko</NewTrackName>
</Track>
</TrackMap> |
Beta Was this translation helpful? Give feedback.
-
This is a beta version and no API is available yet. In the future, once stability is secured and the API is added, it will be released as a full version. You can test it with the master branch or dev Docker image.
Now you can configure ABR with an external encoder using the Multiplex Provider.
The Multiplex Provider's streams pull from other local streams and organize them into their own tracks. It pulls the tracks after encoding, which can be useful if you want to change codecs or adjust the quality once again. Of course, when using a Multiple Provider, in most cases, the track that bypasses the encoder will be pulled and used. And the Multiplex Provider's stream is sent to the Publisher by unconditionally bypassing the encoder.
Limitations
This has the following limitations:
The
<UseIncomingTimestamp>
feature added to the RTMP allows you to use the Timestamp of the external encoder.If you do not use this option or receive streams through another provider, OME will adjust the PTS/DTS of the first frame to 0, so each stream must start at the same time. After beta I will add the UseIncomingTimestamp option to other providers as well.
Configuration
To use this, please enable Multiplex Provider in Server.xml.
The multiplex provider uses .mux files to generate streams. MuxFilesDir is the path where the .mux files are located, and can be set to an absolute system path or relative to where Server.xml is located.
Mux file format
mux files can be created or deleted while the system is running. This works dynamically.
The mux file has the format below.
OutputStream
This is information about the stream to be newly created. It must be the same as the file name.
<stream name>.mux
SourceStreams
Specifies the internal stream to be muxed. You can also load streams from other VHosts or applications in the format
stream://<vhost name>/<app name>/<stream name>
. Because multiple streams are muxed into one stream, track names may be duplicated. Therefore, it is necessary to change the Track name for each SourceStream through<TrackMap>
.<SourceTrackName>
is either<OutputProfile><Encodes><Video><Name>
or<OutputProfile><Encodes><Audio><Name>
.Playlist
The same format as
<OutputProfile>
must be used, and the Playlist must be constructed using the newly mapped Track name in SourceStreams' TrackMap. The Playlist configured here exists only in this stream. The Playlist's FileName must be unique throughout the application.Beta Was this translation helpful? Give feedback.
All reactions