August 31, 2016

August news

In August we've added a few interesting features. But first...

Vote!


Voting is now open for the 2016 Streaming Media Readers' Choice Awards.


If you like our products, please find them as follows:
  • Encoding Software: Nimble Transcoder
  • Media Server: Nimble Streamer
Both products are listed under our company name Softvelum. You must enter a valid email address when you vote; you will receive a confirmation email when voting closes on September 26. You must click the link in that confirmation email for your vote to count.
You can read more about nominations on this page and vote.

Subtitles


Nimble Streamer now supports subtitles for VOD streaming via WebVTT, SRT and TTML formats. This support includes both single subtitle files and multiple files via SMIL.
SMIL sample files can be found in a new githib repo.

Read this article for more details.

Codecs


We also extended codecs coverage for Nimble Streamer.
We introduced support for PCM, or G711, (both a-law and μ-law) audio codec.
It can be used as input for Nimble Streamer Live Transcoder for further transformation into AAC.
It also can be used for RTSP transmuxing - it will be passed through from input to output.

Mobile SDK


Our mobile SDK for Android now has new application graphics and layout. It's a lot nicer now - get it on Google Play to check.

Get it on Google Play

You can get our mobile SDK here.

Next month we'll introduce new graphics for iOS as well.

Minor updates


For those who extensively uses WMPSanel API we added a code for sample API proxy on our github.


If you need to get more information for analysis when trying to solve some Nimble-related issue, check Logging levels article. Once you need more details - just use the level you need.


The last but not the least update: check the State of Streaming Protocols for August 2016.


Follow us at FacebookTwitterGoogle+ or LinkedIn to get latest news and updates of our products and services.

The State of Streaming Protocols - August 2016

WMSPanel team continues analyzing the state of streaming protocols.

The metrics calculations are based on 3.17 billion views. The stats are collected from 2800+ media servers (Nimble Streamer and Wowza).

Protocols share remain stable, i.e. HLS share is about 73% with progressive download near 11% and RTMP around 10%.

The State of Streaming Protocols, August 2016

You can compare that to July stats below.

August 23, 2016

Subtitles support for VOD

Nimble Streamer has wide VOD streaming feature set which covers many HLS-related capabilities like ABR streaming or multiple tracks support.

Now Nimble Streamer is capable of adding subtitles to VOD streams.
Supported formats include  WebVTT, SRT and TTML.

Let's see how they can be used. Major scenarios for VOD subtitles usage can be split into those two categories:

  • Simple scenario - a VOD file with one rendition has one corresponding language subtitles file. This is most common use case and it's handled in a simple way.
  • Complex scenarios like multiple languages for multiple renditions or other versions of the content. It's based on SMIL files usage and it can cover various use cases.
Let's take a look at both of them.

One subtitles file and one rendition


If you have just 1 subtitles file, you need to name it the same way as the original MP4 file. Like this:
/home/user/content/mp4/sample_with_subtitles.srt
/home/user/content/mp4/sample_with_subtitles.mp4
So when you have VOD route set, your playlist URL will look like
http://your.domain/mp4/sample_with_subtitles.mp4/playlist.m3u8
And the playlist itself will be formed like this:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub",NAME="English",URI="subtitle.m3u8?nimblesessionid=91",LANGUAGE="eng"
#EXT-X-STREAM-INF:BANDWIDTH=1049607,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=424x240,SUBTITLES="sub"
chunk.m3u8?nimblesessionid=91
Now the player will be able to get subtitles using the URI mentioned there.

Default language

Unlike TTML, the WebVTT and SRT formats have no language code in their structure so there's no way to determine it. This is why we added vod_subtitle_default_language_id parameter into Nimble configuration file. It's alpha3 language code and it's "eng" by default if nothing else is specified.
If you need to use combination of different languages on the same server, you should look at the next section.

Multiple subtitles and/or renditions


SMIL format is a way you can describe VOD content which has combination of video and audio, like aforementioned ABR streaming.

This format can also be used for subtitles. You can specify which subtitle files will be used for which video files. Having SMIL file, the result URL will look like this:
http://your.domain/path/smil:bunny.smil/playlist.m3u8
Let's take a look at some examples. All sample SMIL files and playlists mentioned below can be found on WMSPanel github page.

One WebVTT subtitles file for 4 renditions of same video


Simple use case when you have just 1 subtitles file and you need to apply it to multiple renditions.


Two SRT subtitle files for 4 different renditions


Check 2 "textstream" elements specifying applied English and Spanish SRT subtitles.


One TTML subtitles file with 5 languages for 4 renditions


Here one textstream file specifies a reference to TTML file containing 5 languages.


Mix of languages and renditions


You can see "first_group" of subtitles (see subgroup="first_group") containing one set of languages (English, German and Norwegian) and it's applied to bigbuckbunny_450_first.mp4 and bigbuckbunny_750_first.mp4 files.
The default group of subtitles contains English, French and Spanish and it's applied to bigbuckbunny_450.mp4 and bigbuckbunny_750.mp4 files that a basically same movies but have probably other audio tracks or logos etc.
So defining groups of subtitles and assigning them to each "video" tag will make Nimble Streamer produce corresponding playlist entries.
If you don't specify the groups then all languages will be used by the player to display to the user.


As you see simple SMIL syntax allows mixing various combinations of content and subtitles so it's up to you to define what is best for your case.

Contact us if you have any questions or suggestions regarding this feature set.

Related documentation


Nimble StreamerHLS feature setVOD streaming in NimbleTTML formatNimble Advertizer

Server logging in Nimble Streamer

As any server software, Nimble Streamer allows tracking its behavior and performance via logging. You can have access logs and also have general server logging.

Access logs


Access log  show all users' requests. It's not logged by default, so in order to enable it, add this parameter into nimble.conf:
log_access = file
Visit parameters page to find out more about parameters setup in general and logging parameters in particular.

Once you re-start Nimble, you'll be able to view the log. In Ubuntu it's located in /var/log/nimble/access.log by default.

Server log


Those logs show information about server behavior in general.

By default, Nimble Streamer server logs are available in /var/log/nimble/nimble.log for Linux and in application log folder for Windows. However you can control that in a config file. Read this reference page to see how you can define destination for your logs.

You may also choose logging level for server information via web UI. The more detailed logging is selected, the more information you'll get as output.

All settings are applied without server restart which allows easily manage its behavior depending on your needs.

Go to Servers menu and then click on the name of the server which you need to make changes for.



In server details page, click on Edit icon - the first one in the list - to see the following page.



Here you can see Log mode drop-down selector. It has the following values:

  • error - this is the default mode, it writes down only errors
  • info - gives information from "error" mode plus general information about server work
  • verbose - adds more details on top of "info" mode output
  • debug - most detailed output.

We recommend enabling debug log mode in case you want to contact our support team.
As was mentioned earlier, all settings are applied dynamically without server restart.

August 10, 2016

PCM G.711 audio support in Nimble Streamer

Recently we were extending codecs coverage for Nimble Streamer.

Today we introduce support for PCM, or G711, (both a-law and μ-law) audio codec.

It can be used as input for Nimble Streamer Live Transcoder for further transformation into AAC.

It also can be used for RTSP transmuxing - it will be passed through from input to output.


Related documentation


Nimble Streamer Live TranscoderRTSP transmuxingCodecs support in Nimble Streamer transmuxer.