March 31, 2017

2017Q1 news

First quarter of 2017 was full of updates for all major products of our company.

Before telling the news, we'd like to mention that our company CEO and CTO will be visiting 
NAB Show 2017 this April.
If you'd like to meet us and talk about our products, plans or anything around - just drop us a note so we could schedule proper time slot.


Also, check out the State of Streaming Protocols for Q1 of 2017 is available with MPEG-DASH going up.

Nimble Streamer


Our software media server and its transcoder got a number of important updates.

We've ported Nimble to IBM POWER8 architecture. It's a good addition to traditional x64 and ARM which were supported before.

Speaking of hardware, we ran an extensive testing of latest NVidia Tesla M60 graphic card in IBM Bluemix Cloud Platform to see how much it increases the performance of Live Transcoder for Nimble Streamer. We got excellent results, read this article for full details.

Live Transcoder now uses two more coding libraries in addition to already supported ones:

Video and audio can also be binded together in case they come from un-synced sources. Read this article for details. Those un-synced sources may be video and audio files - our transcoder is now capable of producing live streams from them. Same article describes how this can be done. You can also check our videos which illustrate this process.

CEA-708 subtitles forwarding is now available in Nimble Streamer for both transmuxing and transcoding.

Handling live streams timing errors compensation for DVR was added as well.

A couple of updates for our protocols processing engine:

  • RTSP can now be take over HTTP using VAPIX.
  • MPEG-TS processing was enhanced by adding mux rate. We've also added a brief troubleshooting section in the corresponding article to make sure our customers can overcome typical issues related to UDP delivery. Read this article for more details.

New WMSPanel statistics


ASN viewers count metric is now available in WMSPanel. It will be useful for those companies that want to build delivery networks with better latency and user experience.


Larix Mobile Broadcasting SDK


Mobile SDK have continuously been improved. You can find all latest versions' descriptions in SDK release notes.


Android and iOS

Both platforms had the following updates:

  • Multiple connections streaming. You can add several connections profiles and choose up to 3 connections for simultaneous streaming. You can stream to several destinations like your primary and secondary origin servers and also target it to some third-party service like YouTube Live or Twitch.
  • Limelight authentication is available. You can publish your streams directly into Limelight CDN for further delivery.
  • Streaming and user experience improvements.


Windows Phone

We've added various updates to Windows Phone application to make it up-to-date with the fixes on other platforms.

As always you can find the latest releases of Larix Broadcaster streaming app in AppStore, Google Play and Windows Store.




The next quarter will bring more features so stay tuned. Follow us at FacebookTwitter or Google+ to get latest news and updates of our products and services.



The State of Streaming Protocols - 2017 Q1

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

First quarter of 2017 has passed so let's take a look at stats. The media servers connected to WMSPanel processed more than 10 billion connections from 3300+ media servers (operated by Nimble Streamer and Wowza) during past 3 months.

First, let's take a look at the chart and numbers:

The State of Streaming Protocols - 2017 Q1



You can compare that to the picture of 2016 Q4 protocols landscape:

The State of Streaming Protocols - 2016 Q4

In the 4th quarter of 2016 it had being collected from 3200+ servers.

What can we see?

  • HLS is still stable at ~3/4 of all connections, its share is 70%.
  • RTMP is at the same level and even increased its share to 12%. Low latency streaming use case still need this protocol.
  • Progressive download is 3rd popular at 6%.
  • MPEG-DASH overcame HDS, Icecast and MPEG-TS going up by nearly 3 times by views count - it's now 5th popular protocol.
  • RTSP and Icecast kept their shares.

So MPEG-DASH is the only protocol which was visibly improving. You can also check December summary of steaming protocols.

We'll keep analyzing protocols to see the dynamics. Check our updates at FacebookTwitter or Google+.

March 15, 2017

VA API (libVA) support in Nimble Streamer

Video Acceleration API (VA API) is a royalty-free API along with its implementation as free and open-source library (libVA). This API provides access to hardware-accelerated video processing, using hardware such as graphics processing units (GPU) to accelerate video encoding and decoding by offloading processing from CPU.

Supported codecs are H.264 and VP8.

Nimble Streamer supports VAAPI and allows using libVA in Live Transcoder as one of the options for encoding among other libraries and SDKs.

Let's see how you can start using libVA in Nimble Streamer Live Transcoder.

Open your transcoding scenario or create a new one.

Sample scenario
Click on encoding block "gear" icon for open details dialog.

Encoder settings dialog with vaapi as Encoder
Here you need to choose "vaapi" option from "Encoder" drop-down and use the Codec dropdown list to select from h264 and vp8.
Now you can fill in library-specific parameters like profile etc. Once you save encoder settings and save the scenario, libva will start working.

Check the description of all supported parameters below.

H.264 encoding parameters


profile

Specifies the codec profile. The values are:

  • high (this one is default)
  • main
  • contstrained baseline

level

Specifies the codec level (level_idc value * 10).
Default: 51 (Level 5.1, up to 4K30)

g, keyint

Number of pictures within the current GOP (Group of Pictures).
1 - only I-frames are used.
Default: 120

bf

Maximum number of B frames between non-B-frames.

  • 0 - no B frames (default)
  • 1 - IBPBP...
  • 2 - IBBPBBP... etc.

rate_control

Sets bitrate control methods.

  • cbr - Use the constant bitrate control algorithm. "bitrate", "init_bufsize", "bufsize", "max_bitrate" - might be specified.
  • cqp -  Use the constant quantization parameter algorithm; "qpi", "qpp", "qpb" might be specified.

Default: cbr if bitrate is set, cqp otherwise.

b, bitrate

Maximum bit-rate to be constrained by the rate control implementation. Sets bitrate in kbps.
Must be specified for cbr.

target_percentage

The bit-rate the rate control is targeting, as a percentage of the maximum bit-rate for example if target_percentage is 95 then the rate control will target a bit-rate that is 95% of the maximum bit-rate.
Default: 66%

windows_size_ms

windows size in milliseconds. For example if this is set to 500, then the rate control will guarantee the target bit-rate over a 500 ms window.
Default: 1000

initial_qp

Initial QP for the first I frames, 0 - encoder chooses the best QP according to rate control;
Default: 0

min_qp

Minimal QP frames, 0 - encoder chooses the best QP according to rate control;
Default: 0

bufsize

Sets the size of the rate buffer in bytes. If is equal to zero, the value is calculated using bitrate, frame rate, profile, level, and so on.

init_bufsize

Sets how full the rate buffer must be before playback starts in bytes. If is equal to zero, the value is calculated using bitrate, frame rate, profile, level and etc.

qpi, qpp, qpb

Quantization Parameters for I, P and B frames, must be specified for CQP mode.
It's a value from 1…51 range, where 1 corresponds to the best quality.
Defult: 0

quality

Encoding quality - higher is worse and faster, 0 - use driver default.
Default: 0

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.

VP8 encoding parameters


The following parameters can be used if you select VP8 as your target codec.

g, keyint

Number of pictures within the current GOP (Group of Pictures).
1 - only I-frames are used.
Default: 120

rate_control

Sets bitrate control methods.


  • cbr - Use the constant bitrate control algorithm. "bitrate", "init_bufsize", "bufsize", "max_bitrate" - might be specified.
  • cqp -  Use the constant quantization parameter algorithm; "qpi", "qpp", "qpb" might be specified.

Default: cbr if bitrate is set, cqp otherwise.

b, bitrate

Maximum bit-rate to be constrained by the rate control implementation. Sets bitrate in kbps.
Must be specified for cbr.

target_percentage

The bit-rate the rate control is targeting, as a percentage of the maximum bit-rate for example if target_percentage is 95 then the rate control will target a bit-rate that is 95% of the maximum bit-rate.
Default: 66%

windows_size_ms

Windows size in milliseconds. For example if this is set to 500, then the rate control will guarantee the target bit-rate over a 500 ms window.
Default: 1000

initial_qp

Initial QP for the first I frames, 0 - encoder chooses the best QP according to rate control;
Default: 0

min_qp

Minimal QP frames, 0 - encoder chooses the best QP according to rate control;
Default: 0

bufsize

Sets the size of the rate buffer in bytes. If is equal to zero, the value is calculated using bitrate, frame rate, profile, level, and so on.

init_bufsize

Sets how full the rate buffer must be before playback starts in bytes. If is equal to zero, the value is calculated using bitrate, frame rate, profile, level and etc.

qpi, qpp

Quantization Parameters for I, P and B frames, must be specified for CQP mode.
It's a value from 1…51 range, where 1 corresponds to the best quality.
Defult: 0

quality

Encoding quality - higher is worse and faster, 0 - use driver default.
Default: 0

error_resilient 

enable error resilience features

  • 0 - disable(default)
  • 1 - enable


kf_auto

Auto keyframe placement, non-zero means enable auto keyframe placement

  • 0 - disable
  • 1 - enable(default) 


kf_min_dist

keyframe minimum interval

kf_max_dist

keyframe maximum interval

recon_filter

Reconstruction Filter type

  • 0: bicubic,
  • 1: bilinear,
  • other: none


loop_filter_type

Loop filter type

  • 0: no loop fitler,
  • 1: simple loop filter


loop_filter_level

loop filter level value. When loop_filter_level is 0, loop filter shall be disabled.

sharpness

Controls the deblocking filter sensitivity

iqi

I-frame quantization index
Range: 0..127

pqi

P-frame quantization index
Range: 0..127






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

Related documentation


March 7, 2017

Nimble Streamer on IBM Power8 platform

Nimble Streamer media server is being developed as a native application for all popular platforms. You can see this in the full list of supported OSes. It also supports basic architectures available at the majority of hosting providers.

Today we add support for a new platform, POWER8 by IBM, a family of symmetric multiprocessors. Both Nimble Streamer and Live Transcoder were ported so you can use full capabilities of our products on this platform, including live streaming, VOD, DVR and build delivery networks of any kind.

Check installation instructions for Ubuntu to proceed with deployment. Only Ubuntu 14.04 is currently supported at the moment.

Nimble Streamer can be potentially ported and embedded to any platform or OS, so feel free to contact us in case you have some special cases.

Related documentation


Nimble Streamer, Live Transcoder,