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.

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.

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