April 25, 2018

fMP4 ABR HLS for VOD AVC and HEVC streaming in Nimble Streamer

Last year Apple announced their support for fragmented MP4, or fMP4, in HTTP Live Streaming protocol. This enables HLS carry the content without traditional MPEG-2 Transport Stream container, which allows reducing the traffic by removing MPEGTS overhead.
The traffic saving is more than 10%, with 15%-20% on average. The all-favorite Big Buck Bunny showed 13% saving on using fMP4 compared to MPEGTS.

Nimble Streamer already had fMP4 support for live streaming, now we introduce fragmented MP4 support for VOD HLS.

This container supports H.264/AVC and H.265/HEVC video, with AAC, MP3 and AC-3 audio.

Setup


The setup for Nimble Streamer VOD streaming routes is made the same way as before, you can read this article for all details. The only difference is in the playback URL. Instead of "playlist.m3u8" name you will use "playlist_fmp4.m3u8" like this:
http://127.0.0.1:8081/vod/sample.mp4/playlist_fmp4.m3u8
When accessing the stream using that type of URL, the content will be automatically re-packaged on-the-fly to provide it in fMP4 container and the playlist will be made using proper standard.

The same applies to ABR streaming with SMIL files. You can set up ABR VOD HLS using SMIL and then use "playlist_fmp4.m3u8" file name like this:
http://127.0.0.1:8081/vod/abr.smil/playlist_fmp4.m3u8
This URL will also generate proper playlist and chunklists.

Playlists


The fMP4-based playlist generated by Nimble Streamer will look as follows.

H.264/AVC playlist for fMP4:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",AUTOSELECT=YES,URI="audio.m3u8?nimblesessionid=3"
#EXT-X-STREAM-INF:BANDWIDTH=1016419,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=424x240,AUDIO="audio"
video.m3u8?nimblesessionid=3
H.265/HEVC playlist for fMP4:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",AUTOSELECT=YES,URI="audio.m3u8?nimblesessionid=4"
#EXT-X-STREAM-INF:BANDWIDTH=1284765,CODECS="hvc1.1.6.L93.80,mp4a.40.2",RESOLUTION=1280x720,AUDIO="audio"
video.m3u8?nimblesessionid=4

The chunks list will be made the same way.


All Nimble HLS fMP4 streams can be played in latest versions of Apple's operating systems as well as in ffplay and JWPlayer. If you know of any other players or platforms, please share your comment about it.

If you have any questions regarding this feature set, please contact our helpdesk.

Related documentation


fMP4 ABR HLS for live streaming, DVR for fMP4 ABR HLS in Nimble Streamer, Nimble Streamer, VOD streaming in Nimble StreamerABR VOD HLS using SMILMP3 and AAC to HLS transmuxing.

April 2, 2018

Live Transcoder wildcard scenarios

Live Transcoder for Nimble Streamer is a powerful tool for easy transformation of your live content. One of its most popular cases is creating multiple renditions from single input which is used for ABR live streaming setup.

To process multiple streams, you typically need to specify a new scenario for every transcoded stream, this means you need to have a set of decoders, filters and encoders for each.
Even though Live Transcoder has a very convenient and easy-to-use drag-n-rop UI, this may be annoying for setting up big amount of streams.

This is why we have wildcard capabilities in transcoding scenarios:

  1. You may specify just application name as a baseline for separating different types of scenarios.
  2. For each incoming stream in this application, its stream name will be taken as is and it will be used for output stream names.

April 1, 2018

Softvelum 2018 Q1 news

First quarter of 2018 gave us several great features and updates.

Before reading further, check the State of Streaming Protocols for Q1 2018 - HLS is on the rise again, SLDP gains momentum, take a look.

Nimble Advertizer


Softvelum released a new premium functionality for Nimble Streamer called Nimble Advertizer. It's a server-side ads insertion framework based on Nimble Streamer.
It allows:

  • Pre-roll ads per each connection
  • Flexible timing for mid-roll ads
  • Per-stream ads insertion
  • Personalized ads
  • Customizable business logic

Those capabilities are supported for RTMP, SLDP and Icecast output protocols, having all other supported protocols for input.
Take a look at Advertizer website for read more details and download technical spec.

Nimble Streamer


Nimble Streamer brought some attention within the industry.

How to Create a Live HLS Feed With HEVC: a new highly detailed article by Jan Ozer explaining how to make fMP4 live streams with Nimble Streamer.
We've also released a blog post describing HEVC transcoding Amazon EC2 instances - which instance types will work best for you for that kind of transcoding.

Take a look at Reliable Low Latency Delivery with SRT+SLDP - an article in Haivision blog describing a combination of SRT and SLDP protocols for building reliable delivery networks.
Softvelum has also partnered with Haivision to provide a 10% discount for their SRT-enabled encoders, check this blog post for details.



We get questions regarding Nimble Streamer usage in high load use cases and scenarios.
Take a look at performance tuning guide for live streaming via Nimble Streamer.

For those who extensively uses SSL for their streaming use cases, check our support for multiple certificates and domains.

Mobile SDKs


Larix mobile SDK is being updated all the time to include new features and improvements.

Our streaming library now supports publishing via SRT in Push mode for both Android and iOS. This allows improving the publishing process within unreliable networks. Read more about SRT and its usage in Nimble Steamer and feel free to try SRT in action using Larix Broadcaster free app.

Mobile playback solutions now support Icecast playback widely used for online radios.
We've also improved our web player to handle fallback for iOS browsers by opening stremainf in SLDP player.

You may also check SDKs release notes for all latest updates and use this page to subscribe for SDKs and their support.


That's it. Stay tuned for more updates and follow us at Facebook and Twitter to get latest news and updates of our products and services.

March 31, 2018

The State of Streaming Protocols - 2018 Q1

Softvelum team continues analyzing the state of streaming protocols. It's based on stats from WMSPanel reporting service which handles data from Wowza Streaming Engine and Nimble Streamer servers - there were 3600+ servers on average this quarter. WMSPanel collected data about more than 12 billion views.

Let's take a look at the chart and numbers of this quarter:

The State of Streaming Protocols - 2018 Q1

You can see significant increase of HLS to 65% share while other top competitors went lower.

Another interesting fact is the increase of SLDP - Q1 had more views than the year of 2017 combined.

You can compare that to the picture of 2017 protocols landscape:

March 28, 2018

Fallback for SLDP iOS browser player

As you know, SLDP low latency protocol is currently supported in MSE-enabled web browsers for desktop and Android using our freeware web SLDP player.

iOS browsers don't support MSE so if a viewer opens SLDP web player, it will not be able to play. However, we have SLDP Player for iOS which supports full capabilities of SLDP protocol and also allows playing RTMP and Icecast.

With latest web player release we introduced the fallback capability which allows easily map web and iOS player. You can use default fallback scenario or you can set up custom fallback.

Default fallback


So if the browser is opened on iOS, it works like this:

  1. Viewer opens page with SLDP web player.
  2. When user clicks to play the stream, the browser asks the user to open it in SLDP Player free app.
  3. If the application is installed and viewer selects to play, the SLDP Player app is opened and the playback starts.
  4. Besides asking for opening the app, a viewer will see a link to download the app in AppStore - it will remain on the player. So if the app is not installed, a viewer will see the download link instead of playback.

Custom fallback


If you decided to use our player mobile SDK to build your own custom app, you may set your web player to open it instead of default SLDP Player.

We've added a few parameters to set this behavior in addition to available parameters described on web SLDP player page.

  • ios_failback_app_url - SLDP iOS fallback application URL. By default it's SLDP Player but you may specify any URL for AppStore app.
  • ios_failback_scheme - fallback scheme for non-secure connection (ws://). By default, it's 'sldp'. So if your web player has URL like ws://server.address/app/stream , it will be opened in your SLDP app like sldp://server.address/app/stream
  • ios_failback_secure_scheme - fallback scheme for secure connection (wss://), by default, it's 'sldps'. It works the same way as iso_failback_scheme parameter.


Having those parameters you may customize fallback behavior.


Related documentation

SLDP , Playback solutionsSLDP setup in Nimble Streamer, Server-side ads insertion for SLDP,

March 26, 2018

Nimble Advertizer inserts video ads into RTMP and SLDP

Recently Softvelum introduced Nimble Advertizer, the Server-Side Ads Insertion (SSAI) framework for Nimble Streamer. This framework allows dynamically insert personalized ads into live streaming content.

Advertizer key features are:
  • Pre-roll ads per each connection
  • Flexible timing setup for mid-roll ads
  • Per-stream ads insertion business logic
  • Personalized ads
We're glad to announce that we've added support for RTMP and SLDP output protocols in addition to previously added Icecast.

Nimble Advertizer may use all input live protocols supported by Nimble Streamer, they are Icecast and SHOUTcastRTMPRTSPSRTUDTHLS and MPEG2TS.

Live input codec for live stream for ads insertion needs to be H.264. Notice that with our Live Transcoder you may also use other live codecs.

For your ads source files you need to use H.264 codec, the container needs to be the MP4 file.

As mentioned previously, output live stream protocols are RTMP and SLDP - both protocols are used for live low latency live streaming.

The workflow is easy to adopt within any business logic:
  1. Nimble Streamer media server processes incoming streams to get audio content
  2. Nimble Advertizer calls your handler web application to get business logic description
  3. Advertizer gets files with advertisements to process them via Nimble Streamer according to your logic defined via handler
  4. Nimble inserts the ads into original media and packages it into Icecast protocol
  5. End user connects to Nimble and gets audio stream containing original content mixed with advertisements
  6. Playback is running smooth regardless of ads insertion over time in any player which supports Icecast.
You can read full technical spec here.

Server-side Ads Insertion framework (Nimble Advertizer) is a premium functionality which requires additional payments. Please check this page to get more details about functionality and pricing.

Related documentation


Nimble StreamerLive streaming features in Nimble StreamerLive Transcoder,