May 31, 2016

The State of Streaming Protocols - May 2016

WMSPanel team continues analyzing the state of streaming protocols.

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

Protocols share remain stable, i.e. HLS share is about 73% with progressive download having 8%.

You can compare that to April stats below.

May 29, 2016

De-interlacing in Transcoder for Nimble Streamer

Live Transcoder for Nimble Streamer allows using various FFmpeg filters for transforming content. Some filter are implemented as transforming blocks in transcoder UI which you may see in our videos.

However, there are tasks that need non-predefined filters. De-interlacing is one of those tasks and FFmpeg has yadif filter which is described in this article.

Let's see how this is done in Transcoder web UI. First you go to Transcoders menu to create new scenario or open existing one.

Scenarios setup page

After adding decoder element with incoming app and stream names, you need to add custom video filter with "yadif" as filter name and zero value.

Add custom "yadif" filter

You should add de-interlacing filter before any other content transformation. This will allow preserving image quality for further changes.

So if you'd like to add some additional filters like scaling, you can add them right after "yadif" filter.

Add scaling after de-interlacing
So your final version of transcoding scenario with de-interlacing and scaling will look as shown below.

Take stream, de-interlace it, then scale and make output, with audio pass-through

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

Related documentation

May 26, 2016

Encoder settings: bitrate, profile, key frame alignment and more in Nimble Transcoder

Live Transcoder for Nimble Streamer has wide range of transcoding capabilities which include H.264 encoding. It currently uses x264 library licensed for commercial usage and any customer with our Transcoder may use x264 parameters to set up outgoing stream. This article gives some details on encoder parameters usage.

As you may have seen from our videos In Transcoder playlist, you need to set up transcoding scenario with source streams, transformation blocks and encoder.

Scenarios setup page
Part of ABR scenario setup example
You can see blue block being sources of streams, green blocks for filters to transform the content and orange blocks as outgoing streams encoders. If you point your mouse to any block, you'll see setup icon - you can clock on it to see details dialog.

As example, here's a dialog for "medium" stream scaling filter which sets it to 360p.

Scale filter for 360p resize
Let's open encoder settings.

Default settings for encoder
Currently we support x264 encoder, let's take a look at its parameters.

Key frame alignment allows arranging key frames according to selected approach.
Those are 
  • source
  • fps
  • interval
  • none
They are described below under the screenshot.
Setting key frame alignment
Keeping source key frame alignment is a required feature for creating ABR streams, like you see here or here. The key will be aligned same way as they are aligned in source stream. So if you use it for ABR, you need to use it. This feature is not available when you use FFmpeg as a command-line tool.

FPS value will insert the key frame according to FPS amount defined in the opened edit box.

Interval value will insert key frame in the time point specified as shown below. It is measured in milliseconds. As example, if you have 0 frame at 5900, and 1 frame at 6100, then you set this value to 6000. In this case a new frame will be inserted at 6000, copied from nearest older frame which is 5900.

Having "none", the key frames will be defined by the encoder, the value will be determined based on preset and tune parameters.

There's currently one codec used for video output so Codec field is not changed.

Preset is selected among available presets which you can see on the screenshot below.

Add bitrate parameter if you'd like to set up the bitrate of outgoing stream. Its unit is Kbps so to have 600 Kbps you need to print "bitrate" in parameter name and then enter "600" in the right field as shown below.
Set 600 Kbps bitrate
Notice: you can set constant bitrate for your encoded stream.

To set up the "tune", type it in left field. In the right field you will be able to select value from dropdown list.
The list of all presents and their meanings can be taken from x264 library documentation like this one.
Setting tune for x264 encoder
Profile is set by printing "profile" in the left filed and choosing the value from the drop down on the right. Typical values are "baseline" and "main".

Choosing profile for x264 encoder

If your input stream is anamorphic you might need to save its SAR parameter in the output as well, especially if you’re using a 'scale' filter in your Transcoder pipeline while DAR = SAR x Width / Height. Nimble supports keeping input SAR using keep-sar parameter set to true for encoder in its ‘Video output’ section. SAR/DAR/PAR correlation is described in this article.

You may refer to X264 documentation like this one to see what else you can do with your encoder using various parameter. Setting those parameters will allow you to control your x264 video encoder more efficiently and make output streams according to your business logic.

To set up audio encoding parameters, please check Audio encoder parameters video on our YouTube channel.

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

Related documentation

May 22, 2016

Live Transcoder for Nimble Streamer

Our company introduces Transcoder for Nimble Streamer. It's a premium add-on for Nimble Streamer which has wide set of capabilities to decode, transform and encode live streaming media.

Input specs

The Transcoder takes the following content

  • H.264, HEVC (H.265), MPEG2, MPEG4, VP8 and VP9 video
  • AAC, MP3, MP2, Speex and PCM G.711 (a-law, μ-law) audio

The input protocols are

Content processing

Our Transcoder has low resource usage and high performance.
  • Each stream is decoded just once
  • Multiple transcoding threads are used on multiple CPU cores
  • Encoding is done once after all transformations
  • A pass-through mode for non-changed media can be applied.
As it's a native application for Linux, Windows and Mac on x64 and ARM, it can be installed on the majority of popular OSes.

Output spec

The output content is encoded as H.264/AAC with pass-through support for known codecs.

The supported output protocols are

Applying FFmpeg™ filters

A wide set of existing FFmpeg filters can be applied to the processed content.
  • Filters are applied without streams interruption
  • 4 different strategies for adding key frames alignment
  • Resize or crop to create multiple resolutions
  • Graphic overlays
  • Make filtering chains without additional decoding
  • Audio transrating, e.g. 256Kbps to 192Kbps
  • Audio re-sampling, e.g. 44KHz to 22KHz
  • Mix several audio sources
  • Add any custom or third-party filter

Hardware acceleration

Live Transcoder supports hardware acceleration:

 Web UI for transcoding scenarios

WMSPanel provides excellent web interface for controlling and reporting media servers which works in any web browser.
Now we applied the same principles to transcoder workflow control:
  • Create any chain of transcoding for both video and audio.
  • Set up filters in a couple of clicks.
  • Drag-n-drop elements of transcoding scenario.
  • Apply changes without interruption of live streaming.
  • Apply settings to multiple servers in a few clicks.
The following YouTube channel playlist shows the UI:

Affordable price

The Transcoder is provided per monthly subscription with an affordable pricing. With Nimble Streamer being low resource high-efficiency software, you can be sure that your total cost of ownership will be as low as possible.

Visit Nimble Streamer Transcoder website to install it and try in action.

Contact us if you have any questions or feature requests, we'll appreciate your feedback.

Related documentation

Troubleshooting Live TranscoderLive streaming capabilities of Nimble Streamer, Building streaming infrastructure with Nimble Streamer