We're glad to introduce an update for Nimble Streamer Playout feature (also referred to as a Server Playlist sometimes). It now provides enhanced functionality for SCTE-35 markers insertion through the playlist. Any systems with SCTE35 support can process the Playlist output in order to insert ads. E.g. Nimble Advertizer can do that for you.
The latest update introduces a new section in playlists called "Scte35Markers". It allows the insertion of SCTE-35 markers at a specific time spot within a playout-generated stream. Using key parameters like "Type", "Start", and "Duration" users can precisely control marker placement.
"In" and "Out" markers types are supported.
“Out” markers support either a precise time in UTC format ("YYYY-MM-DD HH:MM:SS") or the offset from the beginning of the currently running file set in milliseconds.
The improved Playout in Nimble Streamer allows effortlessly inserting SCTE-35 markers directly through the playlist, eliminating the need for additional Nimble API calls.
Install the latest Nimble Streamer version and check these enhancements.
We look forward to enhancing your streaming experience. Let us know if you have any questions.
Server playlist feature set for Nimble Streamer was introduced to provide capabilities to create output live streams from a set of VOD files.
Now Server playlist got a couple of more features to improve it:
take live streams as input for playlist entries;
define default streams in case current playlist entry is not available.
Notice that new features do not change the playlist's basic principles and mechanics. They add new parameters as we describe below. So before reading about the updates, please get familiar with these materials:
You can specify any available live streams. So no matter where your live stream is coming from - RTMP, SRT input or a stream from Nimble Transcoder - you can use it as your source.
You need to prepare your content for playlist input and also additionally transcode it afterwards as we describe in section 2 "Preparing content" of Server playlist spec.
The semantics of live stream input is similar to VOD input: it's inserted among other entries in "Streams" block having "Type" parameter set to "live" as shown below.
The following parameters can be used for live stream entry:
Source - input stream name, defined as "application_name/stream_name" as seen in output streams at Nimble Streamer live streams page.
Duration - the duration of the current stream.
TotalDuration is also supported but it means the same as Duration. If both parameters are set, the one with the smallest value will be used.
Default streams
If the current live stream which is supposed to be playing now, is unavailable for some reason, you may specify a default stream which will be played instead. A DefaultStream parameter can be defined on a block level as shown below.
This default stream may have "Type" parameter be either "live" or "vod". The "Source" defines where the content is taken from, see server playlist spec for details.
For VOD mode, it also supports "AudioStreamId" and "VideoStreamId" parameters to select a respective track if a VOD file has several tracks.
In our previous Playlist article, we have described a very basic playlist to run a set of files as the only live stream which is easy to write manually.
As playlists grow, more JSON tokens are needed and it's easy to stumble in numerous JSON brackets while adding just a couple of files forgotten to add earlier. Things can be a real mess if you add more than one stream and dozens of files. We have a better idea: you don’t have to edit the JSON files manually but use our server Playlist generator page instead.
Essentially, you need to fill the name of the application and stream to define a name of a live stream to output for your files, specify a full path to file located on Nimble Streamer or even multiple files at once, and receive a faultless playlist for Nimble. Then you either download it as a file or copy it to the clipboard to transfer. More details can be found below are in this article.
You should also watch this video demonstrating the entire process:
Requirements
We assume that Nimble Streamer is already installed on your server. Just to remind you, the Transcoder package and license are needed for running playlists. Please subscribe and install the Transcoder package first as described in our installation manual.
All the video files must have the same video and audio codecs and resolution. When the file is switched and the next file's parameters are different the most of the video players will react to it with glitches or interruptions in the playback. You may try SLDP output alternatively, as it is more loyal to codec changes, but still, we strongly recommend preparing files for the playlist as the first step.
We also consider you have read the full server playlist technical specification for complete understanding of all the features and requirements of this feature set.
First, specify an application and stream which Nimble Streamer will use for generating a live feed.
If you've already defined an application in the WMSPanel and marked HTTP output protocols they will be used as the output protocols of your playlist, e.g. LL-HLS or SLDP, or any other. Otherwise, protocol settings on "General" tab will be used. We already explained how to get NDI output from a playlist, by the way.
Defining a stream is equivalent to adding a Task in a server playlists’ grammar. More Tasks can be added meaning you can have multiple named feeds via one playlist.
Next, a content Block is required and the first one is created initially. You can name a Block for easier navigation, or as a reminder, but this is not mandatory.
The second required action is adding files you want to playback. The files must be located at the Nimble Streamer server and must be accessible by Nimble. Please check the permissions if Nimble is not running as root.
Fill the full file path and its name in the corresponding field. To add one more file, click "Add source file", a new input line will appear. For your convenience, we have "Add multiple files" button, to quick input of list of files.
One tip for having a quick list of files in a directory is to use "ls -d -1 "$PWD/"*.mp4" command in terminal and paste its output into "Add multiple files" popup.
After clicking "Add sources", all the positions will be filled with provided file paths.
Also, the download or copying to the clipboard is available to get a playlist. Choose the one that suits you the best. Preview is also possible by clicking on "Show playlist" button.
You may notice that the IDs of blocks are changing randomly. This is done on purpose. If you change or add a file in a block, but do not change the ID, it is considered no changes were made in a Block. Now if changes are made and the playlist is overwritten with a new one, Nimble will re-read within sync interval and apply its changes. Note, no Nimble restart is required for this.
Advanced
For each Block, the "Loop block" check box is available, making Block to repeat endlessly. Block is also having a "Start time" property, for specifying the exact starting time in GMT (not your server’s time zone).
Every added file has a dropdown menu to add advanced options. Starting time (Offset) and duration can be specified in seconds. If a file has several tracks in it, you can define which one needs to be played.
Final thoughts
Server-side playlists can be used for different applications such as simulation of a live feed, airing a pre-recorded stream at a specific time, as a backup program to show at air failures, or even as 24x7 radio made from your MP3 collection.
We believe Server-side playlists will be a handy tool for our colleagues in the industry.
We want to tell you about Server Playlist feature, which lets you create live streams from the video or audio files on your storage. This feature gives vigorous possibilities to your live streaming setup: from simply running a video in a loop as a backup stream to arranging a precise schedule for programs to run at a specific time. Multiplied by Nimble’s and Live Transcoder processing power, you can have any desired live stream egress ranging from re-publishing for any major streaming provider via RTMP or have a precise NDI stream to your equipment. Any supported output protocol can be used, including cutting edge SLDP, SRT and RIST.
As you finish reading this tutorial, you will be able to stream files from a hard disk drive as NDI streams and learn the basics of playlist editing for Nimble Streamer.
For our use case, we will just describe a couple of files in a playlist and loop them endlessly to a live stream, next we set up the Transcoder to make NDI output.
Step 1: Check Prerequisites
First, make sure you have the latest version of Nimble Streamer. You can install it using this instruction or upgrade it.
Third, you need to have an active Live Transcoder license with respective subscription. Check the license at your account Settings menu under Transcoder licenses tab.
Also, we assume that all your video files are encoded with H.264 and have the same resolution and stereo AAC audio stream, so no additional encoding will be discussed.
Step 2: Make Nimble to know your playlists
Conception starts with a Playlist that uses a JSON syntax to describe files for making a live stream. JSON is powerful yet clear and various online tools can be used to validate it against errors.
To make Nimble know the playlist is engaged in work, specify a location of your playlist by adding the server_playlist_sync_url option to nimble.conf. Location can be either a local path on a hard disk drive with Nimble or HTTP(s) URL.
Add the next string to /etc/nimble/nimble.conf file:
and restart Nimble to apply changes. We will fill basic_playlist.json a moment later.
The playlist will be reloaded every 10 seconds, so you can make dynamic changes via some custom scripting and these changes will be accepted by Nimble. If you want any other update time interval, you may set it via the server_playlist_sync_interval option in nimble.conf or via the playlist itself.
Step 3: Write a playlist and get your live stream
The playlist’s grammar is based on key sections: Tasks, Blocks and Streams - which can have their own properties, e.g. Start time or Duration.
Now, copy this text to basic_playlist.json file using your preferred console editor:
A few seconds later you will notice stream live/from_playlist appearing at Live Streams / Outgoing Live streams of your server.
This very basic example perfectly illustrates the mandatory fields and values of a playlist. It contains one Tasks, one Block, and two Stream sections.
Tasks object represents an array of alive streams, which must have a name set by a Stream field as application/name. Tasks also hold an array of Blocks that can be started at different times. It is achieved via Start property, but we are not discussing it for now in this tutorial. Each block must have a unique Id and a number of times to run. These repetitions are set by MaxIterations and each block runs only once by default. Setting MaxIterations to 0 means the infinite loop of a block.
Next comes the Streams array of objects which holds the full path and name of a file to play within the previously defined live stream. Source property is used for this. At the moment, Type property needs to be “vod” in case of files.
No more additional properties are needed for our simplified case but more details can be found at feature technical spec if needed.
Step 4: Turn Live Stream into NDI stream
Now, you see a live/from_playlist stream, so it can be processed via Transcoder to have NDI output.
Create a new Transcoder scenario and use live/from_playlist as Audio and Video Input.
As for Video and Audio output, click NDI radio button and name it from_playlist:
Click Save button and switch to a console to check available NDI streams with the nimble_ndi tool or any other NDI-supported software.
You did a great job by easily transforming your video files to an NDI stream using the Nimble Server Playlist feature and Live Transcoder.
We will continue to show more elegant scenarios and more complex playlists’ grammar in our later articles. Please feel free to share this article with anyone who may be interested in Nimble Streamer’s ability to playback files as a live stream.
Also check our short video about Recording NDI as HLS DVR for further playback with Nimble Streamer.
Server playlists feature set of Nimble Streamer allows creating live streams by composing VOD files and live input streams into single playlists.
Basic workflow looks like this:
Prepare files for further live streaming.
Create JSON playlist which contains description of generated output live streams and their respective files' playback scenarios.
Create Live Transcoder scenarios to re-align output if needed.
Configure Nimble Streamer to use the designated JSON playlist.
Nimble instance generates output live steams according to playlist.
You can update the playlist any moment, it will be picked up by Nimble within playlist sync interval.
The playlist is a JSON file with a simple grammar which allows setting streaming scenarios of various complexity.
Notice that server playlist feature set requires Live Transcoder to operate so you'll need to subscribe for a license and install/register Transcoder on your server.