June 30, 2016

June updates

This month we've released new mobile screencasting app and introduced Quick Sync Video in our Transcoder as well as some other features.

P2P


But first check out a new article from our P2P partner Peer5 - HLS with Nimble - which describes the process of Nimble Streamer setup for both VOD streaming and RTMP transmuxing to HLS. The result stream can be used as a source for Peer5 serverless CDN which highly reduces traffic coming from from the origin.
Check our P2P streaming overview page showing different P2P capabilities and use cases.

Transcoder


Our latest product Nimble Streamer Live Transcoder now supports Intel® Quick Sync Video technology for hardware acceleration.
You can check our Quick Sync featured page for all details including Quick Sync encoder setup parameters and the process of enabling Quick Sync HW acceleration on Windows and on Linux.
This new integration allows using full power of Intel processors for your streaming scenarios.

We're asked how is our transcoder different from FFmpeg library which is a worldwide well-known product. We've released an article describing the benefits of our product over FFmpeg.

Mobile SDK and Screencaster


Our mobile SDK can be used for a number of live streaming cases. One of them is screencasting when you transmit the content of your screen to any destination.
We introduce Larix Screencaster which is based on mobile SDK and is capable of streaming via RTMP or RTSP.
You can get it on Google Play and set it up as described in this article.

Get it on Google Play

You can get our mobile SDK here.
In case you used it before, notice that it has a number of new features and improvements including the aforementioned screencasting.

Nimble Streamer


Nimble Streamer now has the enhanced interleaving compensation. It helps a lot in cases when video or audio stream has some delay.

Another enhancement is LATM header support for AAC while streaming via RTSP and MPEG-TS.

One more interesting feature is live HEVC transmuxing into HLS. This is useful for the cases when your end users devices are capable of H.265 playback.



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


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

The State of Streaming Protocols - June 2016

WMSPanel team continues analyzing the state of streaming protocols.

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

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

The State of Streaming Protocols, June 2016


You can compare that to May stats below.

June 29, 2016

AAC LATM header support in Nimble Streamer

Nimble Streamer has wide variety of audio-related features and advantages. This includes processing of AAC in any available incoming stream regardless of its protocol.

Speaking of AAC, most audio encoders produce AAC with ADTS headers which is commonly used over the Internet.

Now Nimble Streamer supports LATM header in addition to ADTS. It is widely used in satellite streaming over DVB, DVB-T and DVB-T2.

This header can be processed from incoming RTSP and MPEG-TS streams for further transmuxing into other protocols for live streaming. The stream can be also be handled in our Live Transcoder for further transformation.

June 17, 2016

Enable hardware acceleration for Intel Quick Sync in Windows

Nimble Streamer Transcoder supports Intel® Quick Sync technology for both software video encoding and hardware encoding acceleration using Intel® processors feature set. Nimble Streamer now allows using Quick Sync as a H.264 video encoder in transcoding scenarios.

Once you have Quick Sync installed, the software encoding is available in our Transcoder by default while hardware acceleration needs to be enabled separately.

Let's see how hardware acceleration is enabled on Windows platform for Nimble Streamer.

1. Install Nimble


We assume you've already installed Nimble Streamer and the Transcoder on top.

2. Install Intel® Media SDK


To make Quick Sync work, you need to install Intel® Media SDK first. Follow this link to fill in the form and get the SDK installation package.

3. Application isolation workaround


In Windows operating system starting from Windows Vista and later, implementation of hardware acceleration relies on interaction with the hardware graphics drivers. The system isolates the services in a non-interactive environment called "Session 0 Isolation." Applications running in this isolation don't have access to hardware drivers. This means when Nimble Streamer is launched as a system service, Quick Sync hardware acceleration isn't available.



This is why you need to use a workaround when Nimble Streamer is run as an application in an environment with full access to the graphics hardware.

You need to create a setup where Nimble Streamer is started when a server is rebooted and it runs in an environment with full access to the hardware.

You'll need to have the following steps completed:
  1. Create a Windows Scheduled Task that runs the Nimble Streamer when a particular user logs on to the server.
  2. Configure the server to automatically log on after reboot.

4. Create Windows Scheduled Task


To create a Windows Scheduled Task to run Nimble Streamer, do the following steps.

Open Task Scheduler (Start > All Programs > Administrative Tools > Task Scheduler).

On the Action menu, click Create Task action and set the following values.

General tab
  • In Name, enter Nimble Streamer.
  • Click Change User or Group, select the user that will be used to automatically log on to the server and run Nimble.
  • Select Run only when user is logged on.
  • Uncheck Run with highest privileges.
  • Uncheck Hidden.
Triggers tab
  • Click the New button.
  • In the New Trigger dialog box, in Begin the task, select At log on.
  • In the Settings area, select Specific user, click the Change User button, and then select the same user as in the previous step (if not already selected).
  • In Advanced settings select Enabled option clear all other options.
Actions tab
  • Click the New button.
  • In the New Action dialog box, in Action, select Start a program.
  • In the Program/script field, enter <<Nimble Streamer full exe path>>.
  • Leave the Add arguments (optional) field blank.
  • In the Start in (optional) field, enter <<Nimble Streamer full path>>.
Conditions tab
Clear these options:
  • Start the task only if the computer is idle for
  • Start the task only if computer is on AC power
  • Wake the computer to run this task
  • Start only if the following network connection is available
Settings tab
  • Select Allow task to be run on demand option.
  • Clear Run task as soon as possible after a scheduled start is missed option.
  • Clear If the task fails, restart every option.
  • Clear Stop the task if it runs longer than option.
  • Select If the running task does not end when requested, force it to stop option.
  • Clear If the task is not scheduled to run again, delete is after option.

Now click OK.

Now when you click the Task Scheduler Library folder icon in the Task Scheduler contents panel, you will see a list of active scheduled tasks. The new Nimble Streamer task should be displayed in it. You may right-click the Nimble Streamer task and select Run, a command prompt will open and Nimble Streamer instance will start. If a command prompt doesn't open, double-click the Nimble Streamer task and make sure that it's configured according to the instructions above. After you've set up the task properly, log off the computer and log back on as the user for which you configured the task to run. You will see a command prompt open and Nimble Streamer start. Proceed to the next section once you have this working.

5. Set server to auto-logon on reboot


Now you need to set Windows to automatically logon as the user for which you configured the scheduled task to run. There are several methods to configure the auto-logon.

There are also third-party tools that help to make auto-logon more secure by better protecting the user name and password of the target user and locking the server after logon. You may consider LogonExpert as such tool. When using LogonExpert and the Lock computer after logon security setting, you may need to set the Delay computer lock for [x] seconds value to 20 seconds to enable Intel Quick Sync acceleration to work properly.

Make sure that you configure power settings on the server such that the current user isn't automatically logged off and the server doesn't go into Sleep or Hibernation mode. Also, make sure to adjust power settings so that the server always runs at full performance.


You're all set now and you can use hardware acceleration on Windows.

We keep improving the Transcoder feature set, contact us for any questions.

Related documentation


Live Transcoder for Nimble Streamer, Live Streaming features, Build streaming infrastructure with Nimble StreamerTranscoder support for Intel® Quick Sync, Enabling hardware acceleration on CentOS, Enabling hardware acceleration for Ubuntu,

Intel is a trademark of Intel Corporation in the U.S. and/or other countries.

June 16, 2016

Intel QuickSync H.264 encoder parameters in Nimble Streamer Transcoder

Intel® Quick Sync technology provides efficient encoding capabilities. It allows using hardware acceleration for video encoding using Intel® processors feature set and software encoding in all other cases.

Nimble Streamer Transcoder allows using Intel® Quick Sync as a H.264 video encoder in transcoding scenarios.

Library and SDK installation instructions can be found on QuickSync support page.

Here we'll take a look at encoder settings available at the moment.

First of all, take a look at Quick Sync encoder usage in our web UI.


As you see, it takes just a few clicks to use Quick Sync as encoder.

Now let's see what parameters you can use there in order to control encoding process. It's similar to previously described libx264 encoder settings but it has its specifics. In the encoder settings dialog box you can add any of the parameters described below.

June 14, 2016

Compensating the interleaving in Nimble Streamer

Each live stream includes 2 parts - video and audio. They usually go hand-by-hand but sometimes they are un-synchronized, which means video or audio stream has delay comparing to its counterpart. This behavior was seen in some of MPEG-TS hardware encoders like Elemental and Digital Rapids as example.

Small delays are usually compensated by all player software but as far as the delay becomes significant - up to a few seconds - this becomes a problem which leads to playback failure in some players like VLC.

This issue is overcome by adding interleaving compensation. What it does is that it creates a buffer of incoming frames and sorts them for further output. This solves the described problem but introduces some delivery delay and resource overhead because buffering and sorting is done for all stream all the time. This operation is resource-consuming and brings latency into streaming process, as each frame is placed into the buffer and needs to be held at least until the next frame comes in.

This is why Nimble Streamer has this compensation disabled by default and you need to specifically enable it to make this work. As always, this is done via WMSPanel web control UI. You can enable it both for the entire server and for any specific application.


To make the compensation work, click on "Enable interleaving compensation" checkbox. This will show new fields to control parameters.

Set interleaving compensation server-wide.
Set interleaving compensation for specific application.

Min. delay is the parameter which specifies when Nimble needs to start buffering. The default value is 1000 ms which means that if the delay between video and audio is less than 1 second, then compensation will not be performed. As soon as the delay reaches this value, the data will be buffered and sorted. If the delay is changing over time - e.g. from 0.4 to 1.5 seconds - then compensation will be applied only when the delay value reached the "Min. delay" value.
If you set this value to 0 then your streams will be sorted all the time giving out monotonous sequences.
The default value of 1 second will be enough to skip the processing of small deviations that will play fine in existing players like VLC.

Max. delay specifies what is the maximum delay that needs to be handled and its default value is 3000 ms. This parameter is needed in case when the source encoder goes into some malfunction like when components' timestamp is invalid.

Max. queue items defines how many elements - e.g. frames - must be stored in a buffer. The deafult value is 250 which stands for 5 seconds of 50fps stream. If the buffer is fully loaded then the oldest elements are sent out.

The described approach can be used for a number of corner cases of live streams processing, while still having high performance and efficient resources usage.


Troubleshooting


Please also check Troubleshooting Live Transcoder article which describes other corner cases of Transcoder usage.


If you need any help on this feature set, feel free to contact us.

Follow us in social media to get updates about our new features and products: YouTubeTwitterFacebookLinkedInRedditTelegram

June 7, 2016

Nimble Streamer Transcoder advantages over FFmpeg

Live Transcoder for Nimble Streamer is a highly efficient product which uses best available transcoding techniques combined with our own know-hows and researches. One of the components used in Transcoder is FFmpeg™ project. Transcoder uses some of FFmpeg libraries under LGPL, you can see details on our legal details page. Notice that Nimble Streamer core server doesn't use these sources nor libraries.

Many other projects use FFmpeg as a standalone turn-key solution being handled as an external tool. That brings a great result, however we decided to take its best parts and use it linked into our middleware. This brings some development efforts, however it gives us several unique benefits which make our Live Transcoder more efficient and robust than FFmpeg used as command line tool in some cases.

Let's see what makes Live Transcoder for Nimble Streamer differ from out-of-the-box FFmpeg and sometimes more efficient.

June 6, 2016

Larix Screencaster setup and usage

Our team is continuously improving mobile streaming products set.

Using mobile device, you may want to show your screen content to the public in real-time.
This might be your game play process displayed at popular streaming services like Twitch or YouTube.
It can be your mobile device product live presentation on a conference or a webinar.
These scenarios require capabilities to capture your screen and stream it outside the device via some real-time protocol.

Larix Screencaster is a free app for Android. It's capable of streaming screen content in real time to any destination which supports RTSP and RTMP publishing of H.264/AAC stream over TCP. The Screencaster runs in background and can be controlled from notification area.

Besides streaming the content Larix Screencaster allows recording it to MP4.

The application was successfully tested with Nimble Streamer and Wowza Streaming Engine as well as YouTube live streaming. 

The setup is easy and straight-forward:
  • Install the app from Google Play
  • Go to Settings
  • Select best resolution
  • Specify the connection URL for your media stream destination
  • Start streaming your screen.

The URL has the IP-address or domain name of your media server, Port and Path.
For RTMP it will be like:
rtmp://192.168.5.5:1937/live/stream

Take a look at Larix documentation reference to see how you can set up connection in Larix Broadcaster and Screencaster has similar conectivity.

Larix premium SDK


If you'd like to create similar Android app capable of media streaming, you can use our Larix streaming SDK. You will get Larix source code and a library for further UI customization.

Visit our documentation reference page for more Larix setup information.


Please contact us if you have any questions.

Related documentation


Larix mobile SDKInstalling Nimble StreamerTransmux RTSP to HLS, RTMP, DASH and more via Nimble Streamer

June 1, 2016

May news

This month we're glad to introduce important updates for our products.

Before reading further, please take a look at Nimble Streamer website update. We created new digest pages which you may find useful, they have descriptions of all major feature sets of Nimble Streamer:

Live Transcoder


Our team is proud to introduce a long-awaited product - Live Transcoder for Nimble Streamer. It's a premium add-on for our freeware product and it has an affordable price.

It takes H.264, MPEG2 video with AAC, MP3, MP2, Speex audio via RTMP, RTSP and MPEG-TS to transform it into H.264/AAC to deliver via HLS, MPEG-TS, RTMP, RTSP and MPEG-TS protocols.

Each stream is decoded just once for further processing. Multiple transcoding threads are used on multiple CPU cores for high performance. At the other end, encoding is also done once after all transformations. This month we'll introduce QuickSync support for hardware encoding as well.

Multiple FFmpeg filters maybe used for content transformation for both video and audio.

Excellent WMSPanel web UI allows controlling multiple transcoders via single interface, with no interruption to the streams when applying changes.

Visit our website for more details and feel free to go ahead and install Transcoder to see it in action.

As we've already noticed last month, you can take a look at our YouTube Channel to see how you can use the Transcoder.

Also, take a look at recent articles about Transcoder usage aspects:

  1. Encoder settings for bitrate, profile, key frame alignment and more
  2. De-interlacing video with Transcoder


New set of APIs


We've released a major update for our pull API. The following features now have their API methods:

Visit our API reference page to see how they can be used.

Mobile SDK


Our mobile broadcasting SDK has also a major update. It now allows MP4 recording and screenshots capture during recording.
You can see them in action at Larix Broadcaster. You can install it via Google Play and AppStore.

Contact us if you'd like to purchase the SDK for your own applications development.

Publish control for RTMP


Those customers who use RTSP publication, already saw our RTSP publish control framework which allowed managing incoming publishing connections according to their own business logic.
Now we added RTMP support to that framework.
Read RTSP and RTMP publish control framework overview article to find out the details.



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




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