December 28, 2016

December news

The year of 2016 is almost over so prior to posting a year summary we'd like to highlight some significant updates from December.

Live Transcoder

Live Transcoder decoding and encoding capabilities were improved:

We've also added an article about setting constant bitrate for transcoding with x264.

This all improves efficiency and overall user experience of our Live Transcoder.

Nimble Streamer

Nimble has interesting update for ABR. You can now add multiple language streams into ABR stream. So you can combine N video and M audio streams for further usage in any player.


Icecast

Icecast live metadata can now be added to any outgoing Icecast stream using WMSPanel UI. Read this article for details. This is a good addition to existing Icecast metadata pass-through.

Read about more audio streaming scenarios supported by Nimble Streamer.


Larix mobile SDK

Larix mobile SDK has been updated.

Android SDK has several new features:

  • Set custom white balance, exposure value and anti-flicker;
  • Long press preview to focus lens to infinity, double tap to continuous auto focus.
  • Use volume keys to start broadcasting;
  • Use a selfie stick  to start broadcasting;

iOS SDK has minor fixes and improvements for streaming.

Use this page to proceed with SDK license subscription.



In a few days we'll also release a yearly summary of our company. 


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

The State of Streaming Protocols - 2016 summary

Softvelum team which operates WMSPanel reporting service continues analyzing the state of streaming protocols.

As the year of 2016 is over, it's time to make some summary of what we can see from looking back through this past period. The media servers connected to WMSPanel processed more than 34 billion connections from 3200+ media servers (operated by Nimble Streamer and Wowza). As you can tell we have some decent data to analyse.

First, let's take a look at the chart and numbers:
The State of Streaming Protocols - 2016
You can compare that to the picture of 2015 protocols landscape:

December 27, 2016

Adding multiple audio tracks for ABR HLS live streams

Live streaming scenarios of Nimble Streamer include ABR (adaptive bitrate), it can be accomplished via HLS and MPEG-DASH.

Previously we introduced ability to use multiple separate video and audio tracks in same VOD stream. 

Now we've added multiple audio tracks support for live ABR streams. This allows assigning audio streams from any incoming source to ABR streams and define corresponding properties to each of them. Once such stream is defined, a player may provide the audio track selection in order to get proper audio stream.

Let's see how it's set up.

December 26, 2016

Setting constant bitrate for x264 encoder

Live Transcoder for Nimble Streamer has wide range of transcoding capabilities which include H.264 encoding with x264 library licensed for commercial usage by our company so any customer with our Transcoder may use x264 parameters to set up outgoing stream.

This article answers a popular question of our customers - "How can I set up constant bitrate for my streams?" - using x264 encoder settings. This encoder is also known as libx264.

Let us give a couple of short answers and then a full description.

How to set up CRF (Constant Rate Factor) with maximum bitrate


As you may have seen from our screencasts - such as UI sneak preview for ABR scenario setup - you can use web UI to set up transcoding scenario with source streams, transformation blocks and encoder. 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 click on it to see details dialog.

Click on the orange block (that is the encoder settings box) and set the following custom fields:
  • crf to 20
  • vbv-maxrate to 400
  • vbv-bufsize to 1835
This will set maximum bit rate to 400Kbps with CRF of 20.



This is an equivalent of the following FFmpeg parameters:
-crf 20 -maxrate 400k -bufsize 1835k

How to set up CBR (Constant Bit Rate)


The constant bitrate can be set up almost the same way, in the orange encoder block. If you need bitrate 4Mbps, set the values as follows:

  • bitrate to 4000
  • vbv-maxrate to 4000
  • vbv-bufsize to 4000


This is an equivalent of the following FFmpeg parameters:
-b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 4000k

See the following sections to explanations.

Some internals


Nimble Streamer Live Transcoder uses libx264 which has some flexibility to control the bitrate. As described in FFmpeg docs which uses libx264 as well, the CBR is not supported directly due to very complex codec logic but we can emulate and set maximum bitrate.

If you set vbv-maxrate and vbv-bufsize to something basic like the H.264 High Profile @ Level 4.1 limitations, the encoder will still operate in ABR mode, but will constrain itself to not go outside these specifications.

If you set vbv-maxrate to the same value as bitrate, then the encoder will operate in CBR mode. Notice that it's not a strict CBR where every picture has the same size. vbv-bufsize controls the size of the buffer which allows for bitrate variance while still staying inside the CBR limitations.

If you set only "bitrate" parameter then encoder will work in unconstrained VBR mode, having the parameter value as a target but not as fixed value.

Minimum bitrate (minrate)

As for lower bitrate threshold, the library will need to increase quality if average quality cannot reach min-rate, but in case if max possible quality still cannot fill bandwidth gap you will have bitrate lower than you set. Hence "-minrate 4000k" parameter in the example above will just not work - it's not used for libx264 and was added to FFmpeg guide accidentally. We've checked ffmpeg code - it's just a bug in the docs.

Some cases of FPS affecting bitrate


Please also check Handling fuzzy FPS to get proper bitrate output article which covers cases when frame rate may affect output bitrate.


To get some more details please read this FFmpeg docs page and also this forum thread.

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

Related documentation


December 19, 2016

Append metadata to Icecast streams

Nimble Streamer has an extended audio streaming feature set for both live and VOD. Live audio streaming covers both transmuxing and transcoding of Icecast pulled and published streams.

In addition to just transmuxing and transcoding audio, Nimble now allows adding any metadata to any outgoing Icecast stream. So any player capable of Icecast playback and metadata processing will show respective info during the playback.

If you need to just pass through the metadata, you can use this instruction to Icecast re-streaming and this instruction for passing the metadata through Live Transcoder.

Let's see how you can do that.

December 13, 2016

NVENC context cache for Live Transcoder

Nimble Streamer Live Transcoder has full support for NVidia video transcoding hardware acceleration.

Some complex transcoding scenarios may result excessive load on the hardware which may affect the performance and result errors. So you may find the following lines in Nimble Streamer logs: "Failed to encode on appropriate rate" or "Failed to decode on appropriate rate". This is a known issue for NVENC.

There are two approaches to solving this problem.

December 12, 2016

Specifying decoder threads in Live Transcoder

Nimble Streamer Live Transcoder allows performing various transformations over incoming video and audio streams.

Any incoming stream needs to be decoded before any further transformation unless you use a pass-through mode. The decoding may be either hardware-based (such as NVidia GPU decoding supported by Live Transcoder or Intel QuickSync) or software-based.

Software decoding may be optimized in order to use processor resources optimally. This is why the Transcoder allows using multiple threads for video decoding.

By default the decoding is performed using one thread for one stream on one CPU core. If the decoding doesn't consume entire core, more threads are added into that core.

However, in some cases one core in not enough to decode one stream. If you look at Nimble logs you will see messages like
Failed to decode video in appropriate rate
This means you need to run one decoding thread on several cores - this is where multiple threads are used.

Notice that before adding new threads, make sure your CPU is not 100% loaded before adjusting threads number.

December 8, 2016

NVENC decoder in Nimble Live Transcoder

Nimble Streamer Live Transcoder has full support for NVidia video transcoding hardware acceleration. Having the hardware capable of the processing and drivers properly installed, our customer can choose NVENC to handle processing.


NVidia® Products with the Kepler, Maxwell and Pascal generation GPUs contain a dedicated accelerator for video decoding and encoding, called NVENC, on the GPU die. You can take a look at the list of NVidia GPUs capable of that.

We've previously described the NVidia encoding setup. Now lets see how hardware-based decoding can be used.

In the transcoding scenario you need to point to video decoder blue rectangle (with a film on it) and then click on appeared gear button.


You'll see decoder settings dialog. In the Decoder drop-down list it will show "Default" option. This is a software decoder used by Nimble Transcoder by default.



To use GPU decoder, choose NVENC from from list. This will pick up NVidia GPU to take action.


The GPU field is a number which allows specifying the sequential number of physical GPU to process the decoding. So if you want to specify exact GPU to decode specific stream, you need to type the number, e.g. 0, 1 etc. for as many GPUs as you have. If you set it to "auto" then Nimble Transcoder will choose the least busy GPU.

Many Nvidia GPU cards have encoding sessions count restricted to 2 active sessions, the decoding sessions are not limited. So you can use even GTX card to help the transcoder to decode with no limitation.

Deinterlacing mode has the following values:

  • weave will weave both fields (no deinterlacing)
  • bob will drop one field
  • adaptive will enable adaptive deinterlacing

Please refer to NVidia documentation for more details on each mode.

If you'd like to use software decoder though - please check this article.

To improve your NVENC transcoding experience, please also take a look at Transcoder troubleshooting covering most frequent questions.

Zabbix monitoring of Nimble Streamer allows tracking server status, SRT streams and NVidia GPU status.

We keep improving our transcoder feature set, contact us for any questions.

Related documentation



NVIDIA, the NVIDIA logo and CUDA are trademarks and/or registered trademarks of NVIDIA Corporation in the U.S. and/or other countries. 

November 30, 2016

November news

We've made a few significant updates in November.

First, Larix mobile SDK for iOS has been updated with a new feature - Auto Focus Lock (AF-L). Just long press anywhere in the preview, and AF is locked until you tap to re-focus.
Use this page to proceed with SDK license subscription.

Nimble Streamer has a few updates as well.


Published Icecast streams can now be processed in Nimble Streamer. Read this article to see how it's set up and find out more about audio streaming scenarios supported by Nimble Streamer.

If you face any artifacts when publishing streams via UDP to Nimble Streamer, read this post describing the steps to avoid them.


WMSPanel non-admin users can now be granted permission by account admins to control Nimble Streamer instances. Please read this article for more details.

Last but not least, if you use WMSPanel API to control Nimble instances, you may set up threshold notifications to be alerted when you make too many API requests and are close to reach the calls limit. Visit this page for details.



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


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

The State of Streaming Protocols - November 2016

WMSPanel team continues analyzing the state of streaming protocols.

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

Protocols share remain stable, i.e. HLS share is about 77% with RTMP around 12% and progressive download near 5%.

The State of Streaming Protocols, November 2016

You can compare that to October stats below.

November 16, 2016

Processing published Icecast in Nimble Streamer

Nimble Streamer has wide audio streaming feature set which includes both live and VOD. Live audio streaming covers both transmuxing and transcoding of Icecast pulled streams.

Now we're expanding this feature set by supporting the published Icecast sources which have MP3 or AAC codecs.

Current solution was tested with a number of existing Icecast publishing solutions, some of them are as follows:


Those tools' configuration files and sample playlists can be found in a separate githib repo in our account.

In our case the standard "source" login is used and the password is "secret" - just for demo purposes.

Let's see how it's set up for Nimble Streamer using WMSPanel.

November 15, 2016

Nimble Streamer control for non-admin WMSPanel users

Nimble Streamer can be controlled in two ways. First one is to change config files, the second one is to use WMSPanel as a web UI.

WMSPanel is the easiest way to manage your streaming infrastructure based on Nimble Streamer. You can access via any browser and apply settings to multiple servers.

Secure your account in 3 easy steps article gives more ideas about working securely in WMSPanel.

Usually only account admins could control Nimble Streamer behavior. Now, WMSPanel allows those admins to give permission to non-admin users for controlling Nimble Streamer instances. You can specify which servers they may control and then set up white label access to WMSPanel to change the look-and-feel on the panel in order to make it look like you need.

Let's see how you can give that access.

Go to Control -> Users management menu to see the list of current users.

Users list

Now click on Abilities link on the designated user line to see the following dialog.

Servers selection dialog

Here you can see the list of the servers which you have now in your account. Select those which you need to give access for and slick on Save.

After that, the selected user will be able to do all the setup of his/her Nimble Streamer instance, just like the account administrator.

Slice-wide permissions

You can also define permissions for all users in particular slice. Read this article for more details.

Two-factor authentication

Any WMSPanel user may enable two-factor authentication for his user account. Please read this article for more details.



If you have any questions about our feature set, please contact our helpdesk.

Related documentation


Nimble Streamer, Building streaming infrastructure, Live Streaming with Nimble Streamer,

October 31, 2016

October news


October brought some good news for our customers.

First of all, we're honored to see Nimble Streamer as a finalist of Streaming Media Europe Readers Choice Awards in the "Best Streaming Innovation" nomination. We thank everyone who voted for us and hope to get more highlights by the industry press in future.

Speaking of industry  highlights, we are glad to see Radiant Media Player team now considers Nimble Streamer as fully supported media server. You can see us among the partners of this excellent solution.

Live Transcoder


Nimble Streamer Live Transcoder now has full support for NVidia hardware encoding acceleration via NVENC for H.264. It's available for both Windows and Linux platforms.
You can read this article for more details about the setup and capabilities.

Our customers report on huge off-load of their CPU when using GPU via our Transcoder.

Nimble Streamer


Nimble has improvements for both VOD and live scenarios.

When setting up origin-edge delivery configuration with RTMP delayed pull option, you may experience some delay on the viewer side starting the playback from edge. We've added a new option for origin side which you can use for decreasing the buffer. Read this article for more details.

Audio-only and video-only transmuxing for ABR VOD HLS is now supported. You will use SMIL files for that purpose, read this article for more details.

Mobile SDK


Larix mobile SDK was improved for both iOS and Android.


  • iOS SDK now has Larix sample application with Swift 3 support along with improved audio quality.
  • Android has streaming enhancements as well as sound Mute support.


Latest versions of SDK packages will be sent to our customers this week. Subscribe here to get those in case you haven't done it yet.


Dispersa

Our media streams monitoring service has a few updates as well

When you make setup for streams check-overs, you can now select to alert on email and push API when at least one checkpoint reports offline or when all checkpoints report offline.
For your convenience the subject also now contains stream name with checkpoint names, like "Stream offline alert (1/6) - Nimble Promo Video AMS1"



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

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

The State of Streaming Protocols - October 2016

WMSPanel team continues analyzing the state of streaming protocols.

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

Protocols share remain stable, i.e. HLS share is about 75% with RTMP around 12% and progressive download near 6%. MPEG-DASH is ahead of SmoothStreaming, both having less than 1%.

The State of Streaming Protocols, October 2016

You can compare that to September stats below.

October 25, 2016

RTMP delayed pull buffer improvements

RTMP-related feature set of Nimble Streamer allows creating various streaming scenarios with your infrastructure. One of them is delayed pull, or pull by request. It allows saving bandwidth when some stream is not consumed by viewers.

When a viewer requests an edge server for some stream - e.g. via HLS - this edge will start pulling RTMP stream right at that moment. So the origin will give the stream only when it's needed. You can read more in this article.


Usually it takes some time to start the playback on viewer side so we added an enhancement for this scenario. You can now specify RTMP buffer items count on origin so the edge could get bigger buffer to provide it to the player.

So the player will get several chunks almost immediately and start playback in a second without buffering.

To make this work, follow these steps.

1. Upgrade your edge and origin Nimble instances.

2. On your origin, open nimble.conf and add
rtmp_buffer_items = 4096

3. Restart origin server.

Now, once the edge requests origin it will get 30 seconds buffer immediately and will start the playback.

You may find other fine tuning techniques for live streaming in Performance tuning guide.
Also, take a look at RTMP setup in Nimble Streamer video tutorial to learn more about basic RTMP scenarios.

Streaming Media Europe Readers' Choice Award 2016

As you know, Streaming Media is the leading magazine in the online streaming industry. We've been visiting their conferences - Streaming Media East and Streaming Media West - for several years so far and we're excited to participate in their activities.

Now we're honored to have Nimble Streamer as a finalist of Streaming Media Europe Readers Choice Awards in the "Best Streaming Innovation" nomination!



Thanks to everyone who voted for us!

October 20, 2016

NVidia NVENC settings in Nimble Streamer Live Transcoder

NVidia® Products with the Kepler, Maxwell and Pascal generation GPUs contain a dedicated accelerator for video encoding, called NVENC, on the GPU die.

NVENCODE API enables software developers to configure this dedicated hardware video encoder. This dedicated accelerator encodes video at higher speeds and power efficiency than CUDA-based or CPU-based encoders at equivalent quality. NVENCODE API allows the programmer to control various settings of the encoder to set the desired tradeoff between quality and performance.

Nimble Streamer Live Transcoder has full support for NVidia video encoding and decoding hardware acceleration. Having the hardware capable of the processing and drivers properly installed, our customer can choose NVENC to handle streams' encoding.

You can take a look at the list of NVidia GPUs capable of hardware encoding acceleration. To make HW acceleration work, you need to install the graphic card drivers into the system. Use this link to download and install them.

If you haven't yet installed Nimble Streamer transcoder, use this page to find proper setup instruction.

The transcoding scenarios are created using our excellent web UI. You can check this YouTube playlist to see how various use cases are defined. Takes just couple of minutes to complete.


Scenarios setup page
Part of ABR scenario setup example

To set up NVENC settings you need to open encoder settings dialog and choose "nvenc" as the Encoder.


After that you can add various parameters and set up specific values to tune up your encoding process. Please find full list of available encoding parameters below.


preset

Specifies H.264 preset.

  • hp - high performance
  • default - tradeoff between performance and quality
  • hq - high quality
  • llhp - low latency high performance
  • ll   - default low latency preset and the quality and speed is midway of the two other presets
  • llhq - low latency high quality
  • lossless - default lossless preset
  • losslesshp - lossless high performance
  • bd - blueray disk? NV_ENC_PRESET_BD_GUID


profile

Specifies H.264 profile.

  • baseline
  • main
  • high
  • high444


level

Specifies H.264 profile level.

  • 1
  • 1.0
  • 1b
  • 1.1
  • 1.2
  • 1.3
  • 2
  • 2.1
  • 2.2
  • 3
  • 3.1
  • 3.2
  • 4
  • 4.0
  • 4.1
  • 4.2
  • 5
  • 5.1

gpu

Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on.

If you set it to "auto" then transcoder will choose the least busy GPU.

keyint

Number of pictures within the current GOP (Group of Pictures).

  • 0 - NVENC_INFINITE_GOPLENGTH
  • 1 - only I-frames are used

bframes

Specifies maximum number of B frames between non-B-frames.

  • 0 - no B-frames
  • 1 - IBP
  • 2 - IBBP

refs

Specifies the DPB size used for encoding.
Setting it to 0 will let driver use the default dpb size. The low latency application which wants to invalidate reference frame as an error resilience tool is recommended to use a large DPB size so that the encoder can keep old reference frames which can be used if recent frames are invalidated.

fps_n, fps_d

Set output FPS numerator and denominator. It only affects num_units_in_tick and time_scale fields in SPS.
If fps_n=30 and fps_d=1 then it's 30 FPS
If fps_n=60000 and fps_d=2002 then it's 29.97 FPS
Source stream FPS or filter FPS is used if fps_n and fps_d are not set.
Please also check Handling fuzzy FPS to get proper bitrate output article.

rate_control

Sets bitrate type.

  • cqp - Constant QP mode
  • vbr - Variable bitrate mode
  • cbr - Constant bitrate mode
  • vbr_minqp - ariable bitrate mode with MinQP
  • ll_2pass_quality - Multi pass encoding optimized for image quality and works only with low latency mode
  • ll_2pass_size - Multi pass encoding optimized for maintaining frame size and works only with low latency mode
  • vbr_2pass - Multi pass VBR


bitrate

Sets bitrate in Kbps.

max_bitrate

Sets max bitrate in Kbps.

init_bufsize

Specifies the VBV(HRD) initial delay in Kbits.

  • 0 - use the default VBV initial delay


bufsize

Specifies the VBV(HRD) buffer size in Kbits.

  • 0 - use the default VBV buffer size


qpi, qpp, qpb

Specifies the initial QP to be used for encoding, these values would be used for all frames if in CQP mode.

qmin

Specifies the minimum QP used for rate control

qmax

Specifies the maximum QP used for rate control

initialRCQP

Specifies the initial QP used for rate control

quality

Target Constant Quality level for VBR mode (range 0-51 with 0-automatic);

lossless

Enable lossless encode as following: sets QP to 0 and RC_mode to NV_ENC_PARAMS_RC_CONSTQP and profile to HIGH_444_PREDICTIVE_PROFILE.

  • 0 - disable
  • 1 - enable


monoChromeEncoding


  • 0 - disable
  • 1 - enable


frameFieldMode

Specifies the frame/field mode.

  • frame - NV_ENC_PARAMS_FRAME_FIELD_MODE_FRAME
  • filed - NV_ENC_PARAMS_FRAME_FIELD_MODE_FIELD
  • mbaff - NV_ENC_PARAMS_FRAME_FIELD_MODE_MBAFF


mvPrecision

Specifies the desired motion vector prediction precision.

  • default - NV_ENC_MV_PRECISION_DEFAULT
  • full_pell - NV_ENC_MV_PRECISION_FULL_PEL
  • half_pell - NV_ENC_MV_PRECISION_HALF_PEL
  • quarter_pel - NV_ENC_MV_PRECISION_QUARTER_PEL


enableAQ

Enable Spatial adaptive quantization

  • 0 - disable
  • 1 - enable


aqStrength

Specifies AQ strength.
AQ strength scale is from 1 (low) - 15 (aggressive).


enableTemporalAQ

Specifies Temporal adaptive quantization

  • 0 - disable
  • 1 - enable


strictGOPTarget

Set to enable to minimize GOP-to-GOP rate fluctuations

  • 0 - disable
  • 1 - enable


enableLookahead

Enable lookahead with depth <lookaheadDepth>;

lookaheadDepth

Maximum depth of lookahead with range 0-32 (only used if enableLookahead=1)

disableIadapt

Disable adaptive I-frame insertion at scene cuts (only has an effect when lookahead is enabled).

  • 0 - none
  • 1 - disable adaptive I-frame insertion


disableBadapt

Disable adaptive B-frame decision (only has an effect when lookahead is enabled)

  • 0 - none
  • 1 - Disable adaptive B-frame decision


enableIntraRefresh

Enable intra refresh. If the GOP structure uses B frames this will be ignored

  • 0 - disable
  • 1 - enable


intraRefreshPeriod

Interval between successive intra refresh.

intraRefreshCnt

Length of intra refresh in number of frames for periodic intra refresh. This value should be smaller than intraRefreshPeriod.

enableConstrainedEncoding

Set this to 1 to enable constrainedFrame encoding where each slice in the constarined picture is independent of other slices

useConstrainedIntraPred

Set 1 to enable constrained intra prediction.

separateColourPlaneFlag

Set to 1 to enable 4:4:4 separate colour planes

deblockingFilterMode

Specifies the deblocking filter mode. Permissible value range : [0, 2]

adaptiveTransform

Specifies the AdaptiveTransform Mode

  • auto - Adaptive Transform 8x8 mode is auto selected by the encoder driver
  • disable - Adaptive Transform 8x8 mode disabled
  • enable - ptive Transform 8x8 mode should be used


fmo

Specified the FMO Mode

  • auto - FMO usage is auto selected by the encoder driver
  • enable - Enable FMO
  • disable -Disble FMO


bdirect

Specifies the BDirect mode

  • auto - BDirect mode is auto selected by the encoder driver
  • disable - Disable BDirect mode
  • temporal - Temporal BDirect mode
  • spatial - Spatial BDirect mode


entropyCoding

Specifies the entropy coding mode

  • auto - Entropy coding mode is auto selected by the encoder driver
  • cabac - Entropy coding mode is CABAC
  • cavlc - Entropy coding mode is CAVLC


sliceMode

Specifies the way in which the picture is divided into slices.

  • 0 - MB based slices,
  • 1 - Byte based slices,
  • 2 - MB row based slices,
  • 3 - numSlices in Picture

When sliceMode == 0 and sliceModeData == 0 whole picture will be coded with one slice

sliceModeData

Specifies the sliceMode parameter.

  • sliceMode=0, sliceModeData specifies # of MBs in each slice(except last slice)
  • sliceMode=1, sliceModeData specifies maximum # of bytes in each slice(except last slice)
  • sliceMode=2, sliceModeData specifies # of MB rows in each slice(except last slice)
  • sliceMode=3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally;

These are the parameters which you can use already in order to control NVidia video encoding hardware acceleration. Live Transcoder also supports NVidia hardware decoding.

To improve your NVENC transcoding experience, please also take a look at Transcoder troubleshooting covering most frequent questions.

Zabbix monitoring of Nimble Streamer allows tracking server status, SRT streams and NVidia GPU status.

We keep improving our transcoder feature set, contact us for any questions.

Related documentation



NVIDIA, the NVIDIA logo and CUDA are trademarks and/or registered trademarks of NVIDIA Corporation in the U.S. and/or other countries. 

October 17, 2016

Re-sampling audio with Nimble Streamer Transcoder

Nimble Streamer Live Transcoder gives wide range of capabilities to transform both video and audio. Audio features allow doing various complex actions on sound as well as do some one-step actions like audio re-sampling.

Let's see a sample scenario shown below.

First, you see a passthrough of video just because this demo is for audio.
Then you see audio stream input and audio output with AAC encoder.


In between a custom filter added. Here are the details:

October 13, 2016

Audio-only and video-only transmuxing for HLS and MPEG-DASH via SMIL files

Nimble Streamer handles VOD streaming in various ways, one of them is doing ABR VOD via HLS and MPEG-DASH streaming protocols using SMIL files.

You can use SMIL to specify separate tracks in MP4 files which will be used transmuxed specifically with only audio or video for both HLS and DASH. This allows lowering the bandwidth usage.

To illustrate this approach, let's take a look at audio-only use case. We have "bigbuckbunny_450.mp4" file with audio we want to use and video track. There are bunch of other files with different video renditions, without the audio.

Check the sample SMIL file below.

September 30, 2016

September news

This month we were concentrated on two major directions - improvements and bugfixing in Nimble Streamer and mobile SDK development.


Nimble Streamer

DVR feature set of Nimble Streamer was improved by 2 changes.


  • Archive read-only mode which allows playing the stream while the recording s stopped. As our API also supports this feature, the scheduled recording can be performed easily.
  • Maximum archive size parameter to avoid disk overflow. You can check original DVR setup article to see how you can set it.



Windows Phone live streaming

Mobile broadcasting SDK was improved with Windows Phone support. Your Windows device can now broadcast live stream via RTMP to any media servers or services which support this protocol.

Larix Broadcaster is also available in Windows Store to demonstrate current SDK capabilities.

Get it from Microsoft

You can install it for free and use in any live streaming use cases.


iOS SDK

Our mobile SDK for iOS was improved with new graphics and a "Mute" button.

White label streaming application

If you'd like to customize Larix Broadcaster for any platform by adding custom app name, logo, connection stream etc, you can request it as white label. You wouldn't need to hire developer to customize basic things, so this will same you some efforts and time.
Contact us in case you are interested.



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


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

The State of Streaming Protocols - September 2016

WMSPanel team continues analyzing the state of streaming protocols.

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

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

The State of Streaming Protocols, September 2016

You can compare that to August stats below.

Read-only DVR playback and scheduled recording

Nimble Streamer DVR is a popular feature for those of our customers who handle live streaming. New use cases are being covered per requests of clients all the time.

So today we add "read-only" archive parameter along with respective API methods.
Switching the stream to read-only mode allows stop the recording of the stream while making it available for the playback. This is different from current "pause" functionality when the stream is both not recorded nor played.

It should help when you need to make scheduled recording. E.g. some show is running and you set it up to record (disable read-only). When it's over, you set it to read-only and your viewers can watch it.

Another use case is the archive attachment, like when you previously recorded some stream and moved it to some playback dedicated server.

The basic DVR setup is described in this article so here we'll take a look how you can operate this via our excellent web UI. Same operations are available via API so there will be no difference whether you do it by hands or by the script.

Here is what you see when you create a DVR setting for a given application or stream.

DVR settings tab
Your control buttons look like this:
Recording is on, playback is on
This means that DVR works in default mode - recording is running and the playback is available.

Now if you click on "Play" button, your recording will stop but the playback will still be available. Your buttons will look like below.
Recording is off, playback is on
Now if you want to stop any activity, you can click on "Pause" button. Your buttons will look like this:
Fully paused
From here you can either resume the recording (clicking on "Record" button) and resume the playback (clicking on "Play" button).

As mentioned earlier, you may do the same operations via API in order to automate your streaming infrastructure.

Take a look at this video tutorial to get familiar with DVR most useful features.


Read other documentation articles for more details and full description of available options.



If you have any further questions, contact our team.

Related documentation


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 FacebookTwitter, 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 HLS and VOD MPEG-DASH

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

Now Nimble Streamer is capable of adding subtitles to VOD streams.

Supported formats for HLS include WebVTT, SRT and TTML.
Supported formats for MPEG-DASH are WebVTT 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.webvtt
/home/user/content/mp4/sample_with_subtitles.ttml
/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 
http://your.domain/mp4/sample_with_subtitles.mp4/manifest.mpd
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.

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

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.


July 31, 2016

July news

July was very intense in terms of new features.

Audio streaming


Icecast/SHOUTcast transmuxing was entirely re-worked and it now allows processing audio streams via same engine as used for RTMP, RTSP and MPEG-TS. The output protocols are the same plus HLS and MPEG-DASH.
It also allows using our Live Transcoder for audio transformation.
Read this article to see how you can now setup Icecast transmuxing.
Please upgrade or install latest Nimble Streamer and use new Icecast management interface in live pull settings in order to use all new benefits.

Live Transcoder 


Live Transcoder also allows manipulating audio channels to split stereo signal into 2 separate streams. Read this article for details.

Speaking of Live Transcoder, we've added Linux support for Intel QuickSync. So if you have Intel-powered hardware, you should check this capability.

CDNs support


We've added support for RTMP publishing into most popular live CDNs - Akamai and Limelight.
They have special requirements for RTMP authentication and we have them covered now.
Read more about Limelight RTMP setup and Akamai RTMP setup.

Codecs support in transmuxing


We've added a few more codecs into our transmuxing engine.


All new codecs will be used in pass-through mode, with no changes to the content

You can see full list of supported codecs here. There are plenty of them there.

Also, we've update MP4 support to handle EditListBox (elst) primitive for VOD transmuxing.

Paywall update


Our customers we asking for HTTP Referer header support in our paywall feature set. So we've added Referer groups into WMSAuth engine. They can be used in Deny lists.

Mobile broadcasting SDK


Our SDK for iOS was updated with live rotation capabilities that work the same way as in Android.
You can install Larix Broadcaster from AppStore to try it out and get mobile SDK on our website.


WMSPanel API


WMSPanel control API was updated with HTTP origin alias methods.
We've also updated the API reference page with new UI for your convenience. It's now easier to find any functionality or method.



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


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

The State of Streaming Protocols - July 2016

WMSPanel team continues analyzing the state of streaming protocols.

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

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

The State of Streaming Protocols, July 2016

You can compare that to June stats below.

July 25, 2016

Block users by HTTP Referer header via WMSAuth

Nimble Streamer paywall capabilities cover several aspects of content protection. Today we add another enhancement - access control based on HTTP "Referer" header.

You may add required Referers as regular expressions into deny list to avoid them accessing the streams.

Let's see how this is set up.

July 18, 2016

Publishing RTMP to Limelight CDN

Our customers use Nimble Streamer for building live streaming networks with their own infrastructure. However there are cases when some external CDN needs to be used to provide additional geo coverage and off-load your network during peak hours or extraordinary events.

Thus we added Limelight CDN RTMP publishing support in Nimble Streamer. It's based on RTMP re-publishing scenario with a few additional steps. With Limelight RTMP republishing you can reach broader audience within just a few clicks.

If you are looking for Limelight Realtime Streaming service RTMP re-publishing setup, please go to Limelight Realtime Streaming Guide section 3.2.1 for full information.

Here is the setup instruction.

July 14, 2016

AC3 and E-AC3 support in Nimble Streamer transmuxing

Nimble Streamer has extended audio-related features. This includes processing of AAC as a primary codec. However, a lot of people use other codecs.

Nimble Streamer supports AC3 and E-AC3 audio codec for transmuxing.

  • As input, AC3 and E-AC3 is supported in SRT, RISTRTSPMPEG-TSHLS incoming streams.
  • As output, AC3 and E-AC3 is supported in SLDPSRTRISTRTSPMPEG-TS and HLS outgoing streams via re-packaging.
  • AC3 is also supported in DVR output.

This could easily be supported in MPEG-DASH as well if modern players could handle it in live streaming scenarios.

Also check full list of codecs supported by Nimble Streamer.

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

July 11, 2016

VP6, VP8 and VP9 transmuxing in Nimble Streamer

Live transmuxing feature set of Nimble Streamer now covers support for VP6, VP8 and VP9 codecs. Let's see how you can use them in Nimble Streamer.

VP6 via RTMP


VP6 codec is supported only in RTMP protocol. Nimble Streamer has wide RTMP feature set, so you can create full-scale VP6 transmuxing scenarios which includes the following:

  • receiving VP6 content as published stream;
  • get RTMP pulled streams, including pull by request scenario;
  • transmuxing VP6 for RTMP playback;
  • performing RTMP re-publishing to allow delivery to other destinations like your edge servers or third-party CDN.


VP8 and VP9 via RTSP


VP8 and VP9 codec are supported only in RTSP protocol. Nimble Streamer also has RTSP feature set, and VP8/VP9 transmuxing scenarios cover the same set of features:


VP6, VP8 and VP9 playback capabilities all have support for our paywall features like hotlink protectiongeo-blocking or pay-per-view framework.

Another great security option is publish control for VP6/VP8/VP9 streaming which allows applying your business logic to the streams that are published by third-parties.

Also check full list of codecs supported by Nimble Streamer.

Transcode VP8 and VP9


Nimble Live Transcoder supports VP8/VP9 transcoding, read this article for more details.


As you see, Nimble Streamer allows full-scale streaming with all mentioned codecs, from input to multiple destination output. This is done with high performance and low resource usage which allows building delivery networks with low cost of ownership.

If you have any VP codecs family feature request, feel free to contact us about it.