December 24, 2018

2018 summary

The New Year of 2019 is approaching so it's time to look back at what Softvelum has accomplished.
We've had an interesting year as you will find out below.

First, take a look at a few numbers in our State of Streaming Protocols for 2018, our customers stream more each year and we're excited to see continuous connections number growth.

We had a couple of publications which you may find interesting:

Speaking of streaming use cases, this year we started making series of "snapshots" to show how Softvelum products can be used for real-life streaming scenarios. As example, check first case study with mobile-to-mobile delivery chain or "power origin" approach to building CDN. Let us know if you'd like to see more scenarios covered like that.

Nimble Advertizer


The biggest start of this year is Nimble Advertizer. It's a live streaming server-side ads insertion (SSAI) framework for Nimble Streamer media server.

Key features of Advertizer are:
  • Pre-roll ads per each connection.
  • Mid-roll ads flexible timing setup.
  • Per-stream ads insertion business logic.
  • Personalized ads based on users' IDs.
Advertizer supports HLS, RTMPSLDP and Icecast protocols output. It supports both video+audio and audio-only modes. Advertizer may use all input live protocols supported by Nimble Streamer, which are RTMPRTSPSRTUDTHLSMPEG2TSIcecast and SHOUTcast.

The workflow is easy to adopt within any business logic:
  1. Nimble Streamer media server processes incoming streams to get the 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 output protocol.
  5. End user connects to Nimble and gets the stream containing original content mixed with advertisements.
  6. Playback is running smooth regardless of ads insertion over time in any player which supports the output protocol.
You can read full technical spec for more information. Also Nimble Advertizer demo shows simple ad insertion scenarios for HLS/RTMP/SLDP/Icecast in action, with all setup details.

SLDP


Softvelum Low Delay Protocol was introduced in 2017 and this year it's been widely adopted among our customers as a replacement for RTMP low latency delivery.
It's now gaining momentum since Adobe announced that it's going to decline Flash in 2020 which will cause elimination of Flash-based RTMP playback. Major browsers will also decline its usage in 2020 so those who need to have low latency real-time streaming, will have to choose other technologies.

SLDP is a great replacement with its sub-second latency, buffer control, adaptive bitrate and multiple codecs support. Based on WebSockets, it allows playback on MSE-enabled browsers with our HTML5 player, as well as mobile playback on iOS and Android devices with our free apps. Early next year we'll introduce more details on transition from RTMP to SLDP for your ultra-low latency, so stay tuned for our blog and social networks.

Meanwhile, CDNs start adding WebSockets support which allows SLDP delivery natively through their networks. Take a look at CloudFront WebSockets delivery setup with Nimble Streamer as example of such support.

We've been improving SLDP protocol through this year to make it a great solution for RTMP playback replacement.

Nimble Streamer


Besides Advertizer and SLDP, Nimble Streamer also got a number of improvements.

The aforementioned Jan Ozer article How to Create a Live HLS Feed With HEVC refers to fMP4 container support for live streaming. In addition to fMP4 support for live streams, Nimble now has VOD support for fMP4 HLS. So if your customers use latest iOS version, you could use that container for both live and VOD to optimize your distribution costs.

Our customers have been requesting more features regarding end-users connections control. Nimble Streamer now supports sessions authorization via external handler to decide which of the connecting users may continue receiving the stream. Player connects to Nimble Streamer instance via any stream URL, then Nimble reaches the external handler which returns response to define further behavior of the server.
This gives even bigger flexibility to paywall feature set which allows building monetization solution for your content.

Nimble Streamer now has DVR thumbnails generation as JPG files and as single-frame MP4 files, this helps showing preview for any point in recorded stream.

Mobile products


Our mobile solutions are being improved all the time following customers' feedback.

Larix mobile SDK now supports SRT streaming from Android and iOS devices. Nimble Streamer had SRT support for a couple of years so far, so adding that protocol to a mobile publishing SDK has been highly anticipated.

Modern devices are getting support for HEVC (H.265) encoding, so Larix apps and SDKs have support for it as well. You'll need to use RTSP or SRT protocols as a transport for it, as RTMP has no HEVC support.

Latest mobile devices also have high frame rate, e.g. 60fps, so Larix has that for both for iOS and Android on those devices which have that feature support. On Android phones you can now select fixed or variable frame rates, depending on current device capabilities - that's crucial for some transcoding solutions.

SLDP Player for Android and iOS now has Icecast support to give playback capabilities for numerous online radios.
In case you use HTML5 browser player on iOS and have any issues, take a look at SLDP iOS Player fallback setup.

Minor improvements and updates were continuously added to both products during entire year.


We have a couple of new products to deliver for you next year, so stay tuned for updates and we'll continue providing the best possible improvements to help you grow your business.

Our team wishes you a Happy New Year!

The State of Streaming Protocols - 2018 summary

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.

In 2018, WMSPanel collected data about 48 billion views.
We also added a new metric - total view time for our server products. It's nearly 6.7 billion hours.
On average, there were 3600 to 3900 servers under WMSPanel observation at any moment of time.

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

The State of Streaming Protocols - 2018

December 23, 2018

DVR JPEG thumbnails in Nimble Streamer

DVR feature set in Nimble Streamer covers the majority of use cases for streams recording and playback, its setup is described in this article.

We've recently introduced MP4 snapshots of DVR stream which you may use directly via URL or certain kind. MP4 output was chosen over JPG images due to resources usage. MP4 frame can be extracted and inserted into MP4 container with relatively small amount of CPU and RAM. Thumbnails are generated as .mp4 files containing a single key frame. This allows inserting thumbnail in any modern browser using <video> element.

When it comes to saving still image snapshots via JPG, it requires frame decoding and encoding into proper format. That's why you'll need Nimble Streamer Live Transcoder to be available at your DVR server.

Install Live Transcoder and enable thumbnails


Nimble Streamer uses decoding and encoding libraries from Nimble Live Transcoder to get the image from the stream and then encode it into JPG.
So to get his feature working, first you need to install Live Transcoder and subscribe for a license. Once you've installed Live Transcoder and registered the purchased license, you can enable this feature in DVR settings.

Go to Nimble Streamer menu and click on Live streams settings. Once you open settings, go to DVR tab to see your DVR settings. To enable JPG thumbnails, open your stream DVR setting, click on Advanced settings and scroll to Generate JPEG thumbnails checkbox.

Enabling JPG thumbnails generation.
Check that box to enable the feature and use Thumbnail width and Thumbnail height edit boxes to specify dimensions of images. If you leave them as 0, Nimble will save full-size images. If you specify exact values, they will be used for every thumbnail. Another option is to specify only one of those dimensions, in this case, the image will have both sides proportional to each other. E.g. if you set up Thumbnail height to 480 with width set to 0, this will produce thumbnails with 480 height and proportional width, whatever it is for the original image.

Once you start recording any stream via DVR with the feature enabled, it will generate a JPG thumbnail for every recorded segment, its length is defined during the DVR setup. A thumbnail will be a key frame picture at the start of the corresponding segment. Notice that thumbnail generation takes time depending on your hardware so for large resolutions it might take a few seconds. However small resolutions on powerful hardware will allow generating it within a split of a second.

Get thumbnails


Now when DVR is working and pictures are generated continuously, you can get them using the followings URLs.

Latest available thumbnail can be obtained using this type of URL:
http://<server>/<app>/<stream>/dvr_thumbnail.jpg
If you'd like to get specific time spot, add epoch time:
http://<server>/<app>/<stream>/dvr_thumbnail_<utc>.jpg
E.g. http://serverip/live/stream/dvr_thumbnail_1542708934.jpg. In this case Nimble Streamer will return a key frame image at the start of the corresponding segment.

Optimization


If you see that your DVR thread is consuming too much resources, you can add working threads by using thumbnail_transmuxer_threads parameter. Read this article for more details about Nimble configuration. By default, this parameter's vaule is "1".

You may also find useful the API call for DVR export to MP4.

If you have any questions on this or other features, let us know.

Related documentation


Nimble StreamerLive streaming scenariosDVR feature setDVR setup for Nimble StreamerUsage snapshots

November 30, 2018

Using Amazon CloudFront for SLDP delivery

Live streaming is growing these days and a lot of its use cases require sub-second delay between image capture and its display on user's device.
That includes online chatting, betting and bidding, gaming, security and surveillance - all of them demand real-time picture to make the immediate response.

With the decline of Flash and RTMP as the main way to view live streams, the industry has been looking for new ways to deliver the media close to real-time.

Softvelum has developed SLDP, a last-mile delivery protocol for end-user devices to cover real-time demand. It's key features are:

  • Sub-second delay between origin and player.
  • Multiple codecs support: it can deliver whatever your end-user platform can play, e.g. H.264, VP8, VP9, H.265/HEVC.
  • Adaptive bitrate support for delivering multiple resolutions and qualities.

Nimble Streamer software media server has full support for SLDP and its features. You can read this article to check how Nimble Streamer may take incoming live streams and produce SLDP based on that input.
SLDP playback is supported by SLDP Player. On Android and iOS, it's a native mobile application, while browser payback is covered by HTML5 JavaScript player working in any MSE-enabled browser. All three players can be customized via respective SDKs.

November 22, 2018

Playback session authorization in Nimble Streamer

Nimble Streamer paywall features provide a lot of ways of controlling the end-user connection including hotlink protection and pay-per-view which give advanced capabilities but require to sign the stream playback URL on your web page. Other features like geo-location and IP-range block, User-Agent and Referrer fields block require to be pre-configured via WMSPanel.

To give more flexibility, Nimble Streamer now supports sessions authorization via external handler to decide which of the connecting users may continue receiving the stream. The workflow is simple:

  1. Player client software connects to Nimble Streamer instance via any stream URL.
  2. Nimble Streamer keeps the connection and reaches the external handler, sending all details of this new session.
  3. Handler returns response to define further behavior of Nimble Streamer.
Each response has its code in header and body:
  • Code 200 response means the stream can be played by this client.
  • Code 302 makes Nimble Streamer to redirect the client to a specified URL.
  • Code 403 means that this user session is forbidden.

The supported protocols are as follows.
  • Live streaming: HLS, MPEG-DASH, SLDP, Icecast and MPEG-TS.
  • VOD streaming: HLS, MPEG-DASH and Progressive download.
  • Cache-aware re-streaming: HLS, MPEG-DASH, HDS, SmoothStreaming and Progressive download.
Here's how you can use this.

Enable feature


To enable this payback authentication feature, you need to click Control -> API setup top menu. Then you may either go to Global push API tab to define setting for all sever or to Servers push API tab to define per-server setting.

Opening either of those you can scroll down to Auth handler URL section.



Auth handler URL field sets up the URL for your handler web application.

Protected apps is a list of applications to be protected with the handler. You can add or remove apps using removal icon and "Add protected app" link.

Concurrency defines a number of multiple requests to handler to perform at a time.

Allow by default defines if clients should be allowed in case authorization handler becomes unavailable.

Message for handler


Your handler needs to be a web application available via specified URL.

The following JSON message is sent by Nimble Streamer to this handler in POST request body:
{"host":"<host>", "url":"<stream URL>","ip":"<client IP>","user-agent": <User-Agent header> , "referer": <Referer header>, "session_id": <Nimble session ID> , "session_type": <protocol name>}
You can see the meaning of most fields' from the line above. The session_type field value may be one of the following: "HLS", "DASH", "HDS", "SMOOTH", "PD", "ICECAST", "MPEGTS" and "SLDP".

Response from handler


The handler needs to return a JSON with one of the following bodies.

Allow connection:
{"return_code":200}
This means that current client may start receiving the stream in this session.

Redirection:
{"return_code":302,"redirect_location":"http://127.0.0.1:8081/content/blocked.mp4/playlist.m3u8"}
This response body will make Nimble start streaming another stream instead of the one requested initially, i.e. this is a redirection. This is useful if you'd like to show some stub for un-authorized client or if a requested stream is not yet available.

Forbidden:
{"return_code":403}

This response means this stream is forbidden for this particular client session.



Moving forward we plan adding periodic calls for authorization handler during the streaming process in case your business logic requires more flexible control.
Stay tuned for updates and let us know if you have any questions on this feature set.

Related documentation


Nimble Streamer paywall features, SLDP low latency streaming, Live streaming features, VOD features

November 20, 2018

DVR MP4 thumbnails in Nimble Streamer

Nimble Streamer software media server has it DVR feature set which covers the majority of use cases for streams recording and playback.

DVR setup is described in this article and you're probably already familiar with it. Now, to get snapshots of DVR stream, you may use direct URL described below.

Notice that thumbnails are generated as .mp4 files containing a single keyframe. This allows inserting thumbnail in any modern browser using <video> element.

If you'd like to generate JPG thumbnails, please read this article.

The latest thumbnail can be obtained using the following URL:
http://<server>/<app>/<stream>/dvr_thumbnail.mp4
If you'd like to get specific time spot, add epoch time:
http://<server>/<app>/<stream>/dvr_thumbnail_<utc>.mp4
E.g. http://serverip/live/stream/dvr_thumbnail_1542708934.mp4

This feature is enabled by default and if you'd like to disable it, use this parameter in Nimble Streamer config file:
dvr_thumbnails_enabled = false

MP4 output was chosen over PNG or JPG images due to resources usage. MP4 frame can be extracted and inserted into MP4 container with relatively small amount of CPU and RAM. Still image capture requires frame decoding and encoding into proper format which needs extra resources. Our customers like Nimble Streamer primarily because of its high performance and we'd like to keep it that way.


You may also find useful the API call for DVR archive export to MP4.

If you have any questions on this or other features, let us know.

Related documentation


Nimble Streamer, Live streaming scenarios, DVR feature setDVR setup for Nimble Streamer, Usage snapshots

November 7, 2018

White Paper: Tools for tailor-made streaming

We're excited to announce our latest white paper published at Broadband TV News news web site.

It's called Softvelum: Tools for tailor-made streaming and you can download it by filling out the form on its webpage.


Let us know of your thoughts on this article, tell us what else you'd like to read about.

October 28, 2018

Recent failures analysis

Recently WMSPanel web service had 2 major malfunctions which affected our customers. This is the first time we had that kind of strong impact in years.

We'd like to share more information about those issues.

We creates WMSPanel failures status page which has description of recent malfunctions or incidents happened to our infrastructure. We'll keep updating it in case if anything else happens.

We apologize for all inconveniences caused by the described malfunctions. As we described above, we made proper adjustments to our infrastructure to avoid various types of failures.

Unfortunately, nothing is perfect so we know that our hosting infrastructure will give us some hard time going forward. However, we continuously mitigate those possibilities which gives us strong optimism for the future of our services.

September 30, 2018

Softvelum Q3 news

During the third quarter of 2018 our team was working on improving our products.

Before checking the updates, take a look at the State of Streaming Protocols for Q3 2018. Total view time of our server software among all of customers was 21 million hours watched every day.

Nimble Advertizer


HLS ads insertion

Major improvement was made for Nimble Advertizer, the Server-Side Ads Insertion (SSAI) framework for Nimble Streamer. This framework allows dynamically insert personalized ads into live streaming content.
Key features of Advertizer are:
  • Pre-roll ads per each connection
  • Mid-roll ads flexible timing setup
  • Per-stream ads insertion business logic
  • Personalized ads based on your user IDs
Now Advertizer supports HLS live streams output in addition to currently supported RTMP, SLDP and Icecast protocols. It supports both video+audio and audio-only modes. Advertizer may use all input live protocols supported by Nimble Streamer, which are RTMP, RTSP, SRT, UDT, HLS, MPEG2TS, Icecast and SHOUTcast.

The workflow is easy to adopt within any business logic using your own handler app.

You can read full technical spec here.

Advertizer Live Demo

You can see SSAI in action on our Nimble Advertizer Live Demo page. It has RTMP, SLDP. HLS and Icecast live streams with pre-rolls and mid-rolls being inserted for you.

That page also has description of how this demo works so you could try the same approach in your solutions.

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

SLDP


Upcoming 2019 is the last year of Adobe's support for Flash technology which means upcoming decline of RTMP for end-user streaming. This brings the need for real-time low-latency streaming solution which could be used for live delivery and playback.

This year Softvelum introduced SLDP - Softvelum Low Delay Protocol. SLDP is a streaming protocol based on WebSockets. Its basic features include
  • Sub-second delay between origin and player.
  • Codec-agnostic: H.264/AVC, H.265/HEVC, VP8, VP9, AAC, MP3.
  • ABR support: close-to-instant channels switch.
  • HTTP and HTTPS on top of TCP.
  • Buffer offset support.
Clients are currently available for HTML5 web pages, Android and iOS both as free players and premium SDKs.

Server support is available in Nimble Streamer. From setup perspective, it's just another option for your output streams. Read this article for full details on SLDP setup in Nimble.

Softvelum continuously improves SLDP technology by adding new features and updates. Feel free to try it out for your solutions, or just check Nimble Advertizer Live Demo to see SLDP in action with ads insertion.

Mobile solutions


We're updating our mobile streaming solutions on a regular basis, introducing new capabilities and fixes.

Larix free mobile app and premium SDKs for Android and iOS now have HEVC (H.265) encoding support for better compression of outgoing streams.  Also, SRT library in Larix is now version 1.3.1. Those features bring more robustness on unreliable networks and low bandwidth.
iOS Larix also has 60 fps support.

Restream.io has a new article in their help center called Stream From Mobile Using Larix Broadcaster. It's about Larix setup for using Restream.io services.

SLDP Player apps and SDKs had minor improvements and fixes as well.

You can check full description of releases and get SDK subscription any time.


We'll keep you updated on our latest features and improvements.
Stay tuned for more updates and follow us at Facebook and Twitter to get latest news and updates of our products and services.

The State of Streaming Protocols - 2018 Q3

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 13 billion views.

We've added a new metric - total view time for our server products. It's nearly 1.9 billion this quarter, or 21+ million view hours per day.

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


The State of Streaming Protocols - 2018 Q3

You can see HLS share as 69% and RTMP at 17% while progressive download still going down.

You can compare that to the picture of Q2 streaming protocols landscape:

August 23, 2018

Vote for Softvelum in 2018 Streaming Media Readers' Choice Awards

The voting for 2018 Streaming Media Readers' Choice Awards is now opened.

Softvelum is nominated in 3 categories and we appreciate all of our customers and partners to vote for its products!


First, go to voting page here and introduce yourself to Streaming Media website to start voting.

You will find our products in the following categories:

  1. Encoding Software - Nimble Live Transcoder
  2. Media Server - Nimble Streamer
  3. Video Player Solution/SDK - SLDP Player
This article describes all categories and the voting process.

After voting closes on Monday, September 21, you will receive an email asking you to confirm your vote. If you do not confirm your vote, the vote will not be counted so please follow up with Streaming Media email to count your vote!


July 29, 2018

HLS support in Nimble Advertizer SSAI

Earlier this year 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.

Key features of Advertizer are:
  • Pre-roll ads per each connection
  • Mid-roll ads flexible timing setup
  • Per-stream ads insertion business logic
  • Personalized ads based on your user IDs
Now Advertizer supports HLS live streams output in addition to currently supported RTMP, SLDP and Icecast protocols. It supports both video+audio and audio-only modes. Advertizer may use all input live protocols supported by Nimble Streamer, which are RTMPRTSPSRTUDTHLSMPEG2TSIcecast and SHOUTcast.

The workflow is easy to adopt within any business logic:
  1. Nimble Streamer media server processes incoming streams to get the 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 output protocol
  5. End user connects to Nimble and gets the stream containing original content mixed with advertisements.
  6. Playback is running smooth regardless of ads insertion over time in any player which supports the output protocol.
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.

You can read full technical spec here.

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

Related documentation


Nimble AdvertizerNimble StreamerLive streaming features in Nimble StreamerLive Transcoder,

July 13, 2018

July 1, 2018

Softvelum 2018 Q2 news

In Softvelum, we are continuously improving our products and services to protect customers' data, so we've made several major updates in Q2 of 2018.

Before reading further, check the State of Streaming Protocols for Q2 2018, we've added total view time for all of customers, and it's 18 million hours watched through our server software every day!

GDPR


On May 25th, the General Data Protection Regulation (GDPR) of European Union came into effect adding new requirements for companies who may work with data of users from EU.
We have improved our products to comply with new regulation, as well as updated Privacy Policy accordingly. Please read it and let us know if you have any concerns about it.

By logging into our services you agree to our privacy policy and you give a consent to Softvelum to use your email for sending products updates like this one.

We don't send you emails very often, but from time to time we'd like to share news about our products with you.
If you'd like to avoid announcement emails, you can go to Users management page in your WMSPanel account, click on editing user information and check "Exclude user email from WMSPanel announcements" checkbox.

If you have any concerns or issues regarding your privacy in our products, please feel free to contact us via our helpdesk.

Cookies


We've also added cookies usage banner for all users who use WMSPanel website - you might have noticed it entering your account lately. It can be easily dismissed for your convenience.

If you use WMSPanel as a white label and would like this banner to appear for your users, you need to enable it. In order to keep white label look independent from Softvelum, we removed links to Softvelum privacy policy to make it neutral. If you want to control the appearance of this banner, go to Settings menu > Branding tab. For each domain you may click on gear icon to open settings dialog. There you may click on "Show cookie policy notice" checkbox to allow cookies banner for your white label users. It will have a company-neutral text, however if you'd like that banner to point to your own privacy policy, use "Privacy Policy URL" field to specify URL which will be used in banner text.

Nimble Streamer


Nimble Advertizer now supports audio-only HLS output. This means you can serve audio ads via Icecast and audio-only HLS.
You can check more about technical details in this document.

Speaking of HLS, Nimble Streamer now supports fMP4 for VOD HLS for both H.264/AVC and H.265/HEVC content. It also supports ABR VOD via SMIL files. Read this article for more details.

We follow up with latest updates of operating systems and create new packages for Nimble Streamer for supported platforms. Check out new packages of Nimble Streamer for Ubuntu 18.04 and Raspbian 9.

Live Transcoder


We've made a major improvement for transcoder which now allows using shared contexts. This enhances resources usage and simplifies the fine tuning. Read this article for more details on shared contexts.

Also, take a look at Troubleshooting Live Transcoder article for various cases you may face while using Live Transcoder.

We've also added NVidia decoder deinterlacing mode, you can read more about it here.

You may also find useful a step-by-step description for wildcard ABR scenario setup.

Mobile SDKs


Larix mobile SDKs were updated to include new improvements as well as mobile playback solutions. It has a number of bugfixes and performance improvements.

You can check SDKs release notes for all updates and use this page to subscribe for SDKs.


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

The State of Streaming Protocols - 2018 Q2

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 13 billion views.

We've added a new metric - total view time for our server products. It's nearly 1.7 billion this quarter, or 18+ million view hours per day.

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




You can see HLS share as 67% and RTMP at 17% while progressive download went down a bit.

You can compare that to the picture of Q1 streaming protocols landscape:

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


Ads insertion for HLS videoNimble StreamerLive streaming features in Nimble StreamerLive Transcoder,


March 23, 2018

NVENC shared context usage

Our Live Transcoder has full support for NVidia GPU decoding and encoding. As you could see from our stress-test article and EC2 tests, Nimble works very good with NVENC.

Usually customers perform decoding and encoding of a relatively small number of streams for input and output and it doesn't affect the performance of neither GPU, nor CPU. However there are cases when our customers use full power of hardware acceleration to process dozens of streams. In this case, some additional performance tuning should be done.

Nimble Live Transcoder allows re-using shared context to optimize resource usage. You may enable it by adding this parameter into Nimble Streamer config (nimble.conf).
nvenc_context_share_enable = true
Nimble config control is described in this article.

Adding this parameter will enable NVENC context share which will increase the performance of Live Transcoder on high load.

If you'd like to manually create context cache, you may follow this article.
You may also find useful our Nimble Streamer performance tuning guide as well as Transcoder troubleshooting tips.

Feel free to visit Live Transcoder webpage for other transcoding features description and contact us if you have any question.

Contact us if you have any other questions or issues with Live Transcoder.

Related documentation


Live Transcoder for Nimble StreamerNVidia GPU supportHEVC support in Nimble StreamerBuild streaming infrastructureLive Streaming features, Using Amazon EC2 for HEVC transcoding, Nimble Streamer performance tuning.

March 5, 2018

SRT for mobile streaming on Android and iOS

SRT (Secure Reliable Transport) is a UDP-based protocol that optimizes streaming performance on unreliable networks to deliver the best quality and lowest latency video at all times. The initial version was created by Haivision and now it's available as open source and it's maintained and promoted by SRT Alliance.

Softvelum streaming products have full support for SRT.
Softvelum products have full support for SRT technology. Nimble Streamer was the first software media server to support SRT protocol in all of its modes. Our customers actively use SRT for heavy duty projects which need media transmission across large networks across continents. Recent blog post called Reliable Low Latency Delivery with SRT+SLDP demonstrates SRT capabilities in action using the great combination of Haivision encoders and Nimble Streamer media server. Softvelum and Haivision partner to offer you reliable, low latency video streaming over the public internet with SRT.

Mobile SRT streaming


Having SRT working perfectly on server side, we now introduce SRT streaming for our mobile products. SRT capabilities perfectly fit to solve the issues associated with mobile networks like jitters, bandwidth changes etc. So using that technology significantly improves your users' experience.

Larix mobile streaming SDK now allows streaming via SRT in Push mode. It supports all of its features including compensating for jitter by errors correction, AES encryption and more.
This is now available in addition to existing features such as

  • RTMP and RTSP streaming support.
  • Multiple simultaneous destinations for the same stream.
  • Full support for YouTube, Facebook Live, Twitch, Limelight CDN, Periscope and other services.

So you may have your own CDN taking SRT input stream and also send content to Limelight and Facebook - this all can be done simultaneously using the same application.

You can try that in action using Larix Broadcaster freeware app which demonstrates all features of our streaming library. App sources are included in the SDK package so you can easily create your own apps.

Check these links:


You can also refer to these screenshots as example of SRT setup in Larix, it's very simple.

Go to Setting dialog (the gear icon) then click on Connections and create new connection to see this dialog.


First you define your destination URL - it will start with "srt://" and will include the server address and the port which was set up to receive SRT.
If you use encryption, you an fill in SRT passphrase field.

If you need to set more options for your SRT connection, you need to save settings, then go to Manage connections menu and click on its details to see more.




When you have your connections ready to go, check those which you'd like to send your streams to as shown below.



Once you start transmission, you will have your stream being sent to multiple locations.



That's it. With those capabilities you can now have full power of SRT being applied to mobile streaming use cases.

Nimble Streamer SRT setup


Nimble Streamer media servers supports SRT protocol in all modes.
To use SRT with Nimble Streamer, you need to do the following:
This will allow you using full power of SRT in your mobile streaming scenarios.

If you have any issues with setting up SRT, please contact our helpdesk so we could help you.


This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)

Related documentation


Nimble StreamerNimble Streamer SRT protocol supportLarix mobile streaming SDK,  Larix SDK FAQLarix Broadcaster

February 13, 2018

Get 10% off the best live streaming encoders

Softvelum and Haivision partner to offer you reliable, low latency video streaming over the public internet with SRT.



Learn how it works. Softvelum’s recent blog post: Reliable Low Latency Delivery with SRT+SLDP on Haivision.com demonstrates the great combination of Haivision encoders and Nimble Streamer media server in a complete end-to-end SRT workflow. SRT, a UDP-based protocol that optimizes streaming performance on unreliable networks, was applied to both contribution and distribution endpoints as part of a video stream workflow, to deliver the best quality and lowest latency video at all times.

January 22, 2018

Using Amazon EC2 for HEVC transcoding

Nimble Streamer Live Transcoder is currently used in various live transcoding scenarios on various platforms. It can be deployed both to bare metal and virtual servers.

When it comes to HEVC (H.265) transcoding, there are certain limitations you may face. H.265 encoding is resource consuming so Nimble Live Transcoder supports only hardware encoding which is currently implemented for NVidia NVENC and Intel QuickSync. So if your project requires to use some cloud computing platform with no bare metal, you need to find a provider which has hardware acceleration available as part of cloud services. Our customers ask us about such provider so we wanted to do some analysis about this this.

Choosing EC2


After some research we ended up with Amazon Web Services (AWS) and their Elastic Compute Cloud (EC2). Here's what we have.

First, we need to define what chips are capable of HEVC encoding. Take a look at NVENC Support Matrix to see which of the chips have proper support. Considering latest NVidia changes in GeForce drivers EULA, not many cards can do what we need.

Having the list of proper chipsets, check EC2 instance types.  There are two of them that meet our criteria.

  • G3 instances have Tesla M60 based on 2nd generation of Maxwell chip family, starting from 1.14 USD per hour.
  • P3 instances have Tesla V100 based on Volta chip family, starting from 3.06 USD per hour.

We ran some tests on g3.4xlarge instance type, it has Tesla M60 chipset on board which we tested previously on bare metal. This time it also showed great results being used in cloud environment.

Notice that not all regions have P3 and G3 instances available. We tested our case in US East N. Virginia region, you should manually check what is the closest region with required instance types.

January 14, 2018

Nimble Advertizer: server-side ads insertion for Icecast

Our online audio streaming customers often face the need for monetizing for their online radios and live podcasts. This should be done on a server side to provide best user experience and avoid ad-blockers usage.

Today Softvelum introduces Server-Side Ads Insertion (SSAI) framework for Nimble Streamer, it's called Nimble Advertizer. 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

Nimble Advertizer may use all input live protocols supported by Nimble Streamer, they are Icecast and SHOUTcast, RTMP, RTSP, SRT, UDT, HLS and MPEG2TS.
Live input codecs are AAC and MP3. Notice that with our Live Transcoder you may also use MP3, MP2, Speex, PCM G.711 (a-law, μ-law)
For your ads source files you may use AAC and MP3 codecs.

Output live stream protocol is Icecast - this is the most popular protocol for online radios.

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.


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


Ads insertion for HLS videoNimble StreamerAudio streaming features in Nimble StreamerLive Transcoder