January 31, 2022

HEVC support for Widevine and PlayReady DRM in Nimble Streamer

Nimble Streamer DRM provides wide range of DRM encryption technologies and key management platforms.

Recently we've added support for H.265/HEVC codec for these encryption technologies:


They work for all major scenarios:

So you can deliver your un-protected stream into Nimble Streamer, convert it into MPEG-DASH or HLS fMP4, record into DVR if needed, encrypt and then deliver to your viewers for further playback. And if you have any VOD files, you can define transmuxing rules and then set up DRM so they could be played via DRM-powered players.

On the viewers' side, Larix Player for Android allows running MPEG-DASH streams via embedded ExoPlayer in all streaming modes and decode Widevine and PlayReady streams. You can download it on Google Play and visit Player website to learn more.

Feel free to try Nimble Streamer DRM in action and let us know of any questions.


Related documentation

Nimble Streamer DRM, Nimble Addenda package, Larix Player for Android











January 26, 2022

Support for CEA subtitles: CEA-608 in MPEG-DASH and CEA-708 in HLS

 Nimble Streamer has wide support for MPEG-DASH live streaming, including subtitles processing.

When CEA-608 subtitles are integrated into a video track, most players require those subtitles to be declared in the manifest, otherwise a viewer cannot select them at all.

This tag is used in a manifest for the declaration:

<Accessibility schemeIdURI="urn:scte:dash:cc:cea-608:2015" value="CC1=lang">

where value contains the number of the track with subtitles and their language, e.g. "CC1=eng".

This option can be set in server settings under Nimble Streamer / Live Streams Settings menu in Global  tab in CEA-608/CEA-708 settings field.

This setting is applied to live and DVR output streams.

The format is as follows:
<app1>[/<stream>]:N=<lang>[;N=<lang>] <app2>[/<stream>]:N=<lang>[;N=<lang>]
Each new application is separated by a space. Here's an example where all streams for "live_app" application will have first track with Russian subtitles:


For MPEG-DASH CEA-608 the setting is simply "live_app:1=rus". This is what you'll see in a manifest:
<Accessibility schemeIdURI="urn:scte:dash:cc:cea-608:2015" value="CC1=rus">
For HLS CEA-708 it's "live_app:708.1=rus"

This is how you'll see it in your player:




You may combine settings for multiple apps and streams, e.g. for DASH CEA it would be
live_app:1=eng;2=rus live_app2/stream1:1=eng;2=fra
will set two tracks for all streams in "live_app" application and also will define two tracks for a single "live_app2/stream1" stream.

If you want to set a setting for entire server, just skip "app=" part. E.g. for HLS CEA-708 set parameter to "708.1=eng"


Please also take a look at Subtitles digest page to see what else Nimble can do for you.


Related documentation 

Nimble Streamer MPEG-DASH features



January 12, 2022

Server playlist support for live steams input

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:

Let's see what we've got.


Live streams input

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.

{
  "SyncInterval": 5000,
  "Tasks":
  [
    {
      "Stream": "live/playlist",
      "Blocks": [
        {
          "Id":"1", "Start":"2022-01-17 08:00:00",
          "Streams":[
            {
              "Type":"vod", "Source":"/var/mp4/sample.mp4", "Duration":20000"
            },
            {
              "Type":"live", "Source":"live/stream", 
"Duration":600000"
            }
          ]
        }
      ]
    }
  ]
}

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.

{
  "SyncInterval": 5000,
  "Tasks":
  [
    {
      "Stream": "live/playlist",
      "Blocks": [
        {
          "Id":"1", "Start":"
2022-01-17 08:00:00",
          "DefaultStream": {
            "Type":"live",
            "Source": "live/default"
          },

          "Streams":[
            {
              "Type":"live", "Source":"live/stream"
            },
            {
              "Type":"vod", "Source":"/var/mp4/sample.mp4", "Duration":20000
            }
          ]
        }
      ]
    }
  ]
}

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.


Playlist Generator

You can use our Playlist Generator to create a simple playlist using our UI wizard

Watch this video tutorial to see the setup process in action.




Let us know if you have any further feedback regarding the server playlist.


Related documentation

Server playlistGenerate NDI stream from local files via Server PlaylistWeb UI for Server Playlist