November 20, 2017

DVR for fMP4 HLS with HEVC and AVC in Nimble Streamer

As our customers already know, Apple announced the support for fragmented MP4, or fMP4, in HTTP Live Streaming protocol.  Proper support is available in latest versions of Apple's operating systems.

Softvelum recently introduced live streaming fMP4 support in Nimble Streamer. It allows transmuxing of incoming streams with HEVC (H.265) and AVC (H.264) content. Nimble Streamer is the first software media server to have full support for fMP4 in HLS for live streaming scenarios.

Now we're the first to introduce full support for fMP4 DVR.

Nimble Streamer allows recording any incoming live streams with HEVC (H.265) and AVC (H.264) content to provide playback capabilities - with fragmented MP4 container in addition to existing MPEG2TS container.

The DVR setup is done the same way as before - read this DVR setup article for more details. It has no difference between AVC and HEVC content.

You can play fMP4 and MPEG2TS HLS DVR streams simultaneously with no need for additional settings - the only difference is in output URL. If you have a live stream name like
http://yourhost/live/stream/playlist.m3u8
then your MPEG2TS-based DVR stream URL will be
http://yourhost/live/stream/playlist_dvr.m3u8
To use fMP4 playback DVR stream, your URL will be
http://yourhost/live/stream/playlist_fmp4_dvr.m3u8
So you can provide proper links for different target device types according to their capabilities.

The ABR DVR stream for fMP4 would be played the same way - just specify ABR app name in URL with the same playlist name:
http://yourhost/live_abr/stream/playlist_fmp4_dvr.m3u8
Of course, it can also be used with MPEG2TS ABR streams.

With this new type of URL you can use all the same DVR features:

October 30, 2017

fMP4 HLS ABR - live AVC and HEVC streaming in Nimble Streamer

Recently Apple announced the support for fragmented MP4, or fMP4, in HTTP Live Streaming protocol. This allows the content to be played in HLS without the need for the traditional MPEG-2 Transport Stream container.

Now proper support for fMP4 is available in latest versions of Apple's operating systems - iOS 11, macOS High Sierra and tvOS 11. So if your viewers have appropriate devices with latest OS updates you can use full power of HLS for live streaming.

Nimble Streamer is the first software media server which has full support for fMP4 in HLS for live streaming scenarios. Let's see what features of our products can be used to utilize that new capability.

fMP4 H.264/AVC live streaming


H264/AVC is fully supported in Nimble Streamer for all protocols that are able to carry it. As H.264 is the default codec for HLS, it's been in our server from the beginning, so now Nimble is capable of delivering it with fMP4 in live mode.

fMP4 HLS with H.264 can be generated by both transmuxing and transcoding. Nimble Streamer allows taking RTMP, RTSP, MPEG-TS, SRT, UDT and HLS as input with H.264.

Transmuxing engine of and re-packaging it to fMP4 of HLS. Whatever protocol is used, Nimble handles it equally efficient. You can read this article to see some examples of low resource consumption.

Live Transcoder allows generating the AVC content which is fully compatible with HLS via any container. It takes content via same protocols as transmuxing engine to perform further transformations. They include decoding with software decoder, Intel QuickSync or NVidia hardware accelerator. Having the decoded content, transcoder allows applying any available filters and then do efficient encoding. Encoding can be done with libx264, libVA, Intel Quick Sync or NVidia NVENC.

Transcoding scenarios control is available via drag-n-drop web UI dynamically without stream interruption. Just move scenario elements and apply settings - your users will see transformations in a few seconds.

Nimble Live Transcoder has low resource usage and high performance which you can see in a benchmark test with Tesla M60 made in IBM Bluemix Cloud Platform.

fMP4 H.265/HEVC live streaming


Nimble Streamer has wide support for H.265 (HEVC) in both transmuxing and transcoding. HEVC can be taken for processing via RTSP, MPEG-TS, SRT and UDT as input.

Transmuxing of protocols which contain HEVC is performed with the same highly efficient re-packaging engine as used for H.264.

Live Transcoder generates HEVC content fully compatible with fMP4. It allows decoding HEVC with software decoder, Intel Quick Sync and NVidia hardware. The encoding currently can be performed only on hardware using Intel Quick Sync and NVidia NVENC. All filtering and web control dynamic capabilities are available for HEVC the same way as for other codecs.

So HEVC content delivered with HLS can now be played on all compatible devices with latest OS updates.

Adaptive bitrate fMP4


One of HLS innovations is the ability to combine H.264/AVC and H.265/HEVC streams in the same adaptive bitrate stream. This allows using appropriate codecs for proper resolution according to products requirements.

Nimble Streamer provides an easy way to create and use ABR streams with this new capability. This process is described in ABR streaming setup article. You can see how you can combine streams and use them as you need.

Setup in Nimble Streamer


To generate fMP4-powered HLS streams, you can use any source of live streams supported by Nimble Streamer. Check instructions for use cases below:

To enable fMP4 streaming, on your Live Streams Settings page you need to select HLS (FMP4) checkbox. This will un-check "regular" HLS and HLS (MPEGTS). The first option generates standard HLS chunks. The second option can be used for audio-only streams with MPEG-TS chunks.
Warning! After you enable fMP4 for your application or for the entire server, its streams will be played well only on appropriate Apple devices. All other playback devices and software like Android or PC web players will not be able to play it. We recommend creating a separate application for fMP4 delivery if you have different target platforms for your streams. This may definitely change in future but for now you need to consider this factor.
In addition to fMP4 you can select any other supported output protocols as shown on a picture below.

Selecting HLS with fMP4
As in any other live streaming scenarios, the result output streams can be found in Nimble Streamer -> Live Streams page in Outgoing streams section. You can take a look at setup example in RTMP transmuxing article.

To set up and use adaptive bitrate streams with fMP4, follow the ABR streaming setup article.

DVR for fMP4


Nimble Streamer DVR feature set has full support for fMP4 recording and playback. So if you set up DVR recording for fMP4-enabled application or server, both MPEG2TS and fMP4 playback will be available simultaneously via different URLs. Both HEVC (H.265) and AVC (H.264) codecs are supported.

Transcoding for MP4


Regarding H.264/AVC or H.265/HEVC transcoding setup please refer to the links located on our Live Transcoder main page and our Transcoder setup video guides on YouTube.

Coming soon


We plan adding fMP4 support for VOD HLS later on. Feel free to contact us regarding any feedback or issues of this capability.

Related documentation


Nimble StreamerLive streaming with Nimble Streamer, HLS support in Nimble StreamerLive Transcoder, ABR streaming setup, Paywall feature set in Nimble Streamer, Nimble Streamer supported codecs

October 24, 2017

Publishing stream to Facebook Live

Nimble Streamer allows publishing live streams to various types of destinations, like other media servers, CDNs, YouTube or Twitch.

Facebook Live platform allows taking RTMP streams as input, so Nimble Streamer users can use that as a target as well. The setup and usage is simple so we'll show you how to do it.

As a source for your stream you can use any delivery method supported by Nimble Streamer.

Once the input stream is received by Nimble, it can be re-published via RTMP to Facebook . Let's see how this can be set up.

October 12, 2017

DVR timeline in Nimble Streamer

As most of our customers already know, DVR feature set in Nimble Streamer allows recording any incoming live streams and provide playback capabilities for them. It has time range selection and other features.

Now we introduce time line browsing and playback. Here's how you can enable and use it.

Upgrade Nimble


Before using this feature set, please upgrade Nimble Streamer to latest version to make DVR timeline work. You can check Nimble Streamer release notes to see what's the difference between versions.

Browse time line 


To browse the recorded streams, you need to go to Nimble Streamer -> DVR streams menu. There you'll see the list of recorded streams.


To view the DVR steam directly you can click ion a question mark on the right side f the list - this will open the sample player dialog showing current playback.

To view the timeline of an individual stream, click on a "clock" icon on the right side of a stream row. You will see the timeline dialog which will immediately start obtaining data from Nimble Streamer instance which has that stream archive.


This will take a few seconds - not more than a sync-up time which is typically 30 seconds. Once the data is received, the dialog will see full timeline of selected stream's recording.


Here you will see green lines which represent recorded fragments - i.e. the time which has recorded data. The blank space shows absence of any records.

Date and time selectors allow defining the intervals to view. As soon as you start selecting date or time, the display will immediately move the focus so you'll see how far you've moved.


Also, take a look at the navigation bar on top.

Previous and Next buttons will move the focus to the points of beginning and the ending of the recorded fragments. Once it moves, you will see red dot at that point.


Zoom in and out buttons allow changing the scale of the timeline. You may also scroll with your mouse or touchpad to do the same.

You may also drag the timeline by the scale at the bottom of the chart to move between zoomed fragments.

Fit timeline button will reset all zoom and scroll to show full archive again.

You can play the DVR stream from selected point simply by clicking on it. See Play records from selected point section below for more details.

Browsing multiple archives


Besides viewing single stream archive, you can browse and compare data from multiple streams.

Select required streams by clicking on respective checkboxes and click on DVR timeline button.



You will see the same timeline dialog but it will have all streams which you picked up, being shown at the same scale and common range.


Here you can do the same operations as you could for single stream. Moving among fragments via Previous and Next button will be done on the common time scale as well so you'll jump between streams according to thier break points. To play the stream from selected fragment, just click on it - see the next section for details.

Play records from selected point


You may click on any point at the timeline to start playback from that moment. When you click you will see the sample player dialog starting the stream from selected time.


Here you see the Choose URL to play dropdown list of playback URLs - if you have multiple IPs of your server, you will see streams for all servers. Currently only HLS is supported for fragmented playback.

Notice that for HLS you can use both fMP4 and MPEG2TS containers for playback simultaneously using separate URLs. That will be
playlist_dvr_range-12345667-787.m3u8
for MPMEG2TS and
playlist_fmp4_dvr_range-12345667-787.m3u8
for fMP4.

You'll be able to select a player which you'd like to test with this stream and also get the player code by clicking the Show player's code button.

And of course you will see the playback of the recorded stream in selected browser from the moment which you pointed it to. The recording will be played until the end of the fragment where you pointed.




That's it - feel free to browse your archives to see what was going on.

Let us know if you have any questions regarding this functionality.

Related documentation


October 4, 2017

Troubleshooting Live Transcoder

Live Transcoder for Nimble Streamer is being used by various companies around the globe in many live streaming scenarios. However, some customers run into typical problems which they address to our support.

Some typical troubleshooting techniques for Nimble Streamer itself are described in Before you post a question to helpdesk article.

We'd like to describe Live Transcoder issues that appear in some cases and can be solved by the customer.

Q1: Stream stops unexpectedly

Nimble Streamer goes offline, it's shown as "offline" in WMSPanel account.

Check Nimble Streamer logs located at /var/log/nimble/nimble.log

Look for this type of messages:
[2017-10-04 04:23:26 P1486-T2435] [encoder] E: encoder too slow, droped 2038/2039 audio frames for [live/stream]
[2017-10-04 04:24:58 P1486-T2435] [encoder] E: encoder too slow, droped 3765/3766 audio frames for [live/stream]
You can also check system logs in /var/log/kern.log or /var/log/messages (depending on your Linux distro) to find this type of messages
Oct 04 04:25:28 loft24330 kernel: [46756.231449] Out of memory: Kill process 1486 (nimble) score 957 or sacrifice child
Oct 04 04:25:28 loft24330 kernel: [46756.249823] Killed process 1486 (nimble) total-vm:52904636kB, anon-rss:32208832kB, file-rss:0kB
Both errors indicate that your server cannot encode all streams in time. The second system error shows that Linux Kernel shut down the process due to Out of Memory condition.

As a resolution, you should decrease the number of encoded streams on this server. You could set up another server and encoder and make those extra streams be processed there.

Speaking of the memory, you should also check and set up proper RAM cache size to and make sure that value is enough to store your live stream chunk cache.

Q2: Unsupported format 12


You may see errors like these
[2017-10-13 22:18:14 P86076-T96639] [encoder] E: failed to encode video frame for [live/stream]
[2017-10-13 22:18:16 P86076-T96641] [encoder] E: unsupported frame format, 12 
This means you need to change pixel format.
Open your scenario and add new custom parameter "format" element prior to your encoder element. The parameter name will be format and the value will be pix_fmts=yuv420p as shown on this picture.


Once you apply settings, the error error should be gone.

Q3: NVENC is not available


If you fail using NVENC as you decoder and/or encoder, you may see messages like this:
nvenc is not available
This means you don't have NVENC driver installed or properly set up in your system.

Q4: What NVENC drivers should be used?


We highly recommend using official NVidia drivers.
We may decline requests for technical support in case if a customer uses any un-official or "patched" drivers from any third-parties.

Q5: Transcoder not found after installation on Windows


Some customers install Live Transcoder on Windows 2008 and after registering the license they still get a message like
Please install 'nimble-transcoder' package
with additional info about installation procedure.

First please try re-starting Nimble Streamer and try that again.
If that doesn't help, you may need to install update KB2533623 by Microsoft. Please follow this instruction to make update and then re-start Nimble Streamer.

Q6: Failed to create NVENC context


If you use NVENC and experience some issues you may see messages like these:
[2017-10-18 12:32:54 P23976-T24004] [tranmain] E: failed to create cuda context, gpu=1, flag=4
[2017-10-18 12:32:54 P23976-T24004] [tranmain] I: create cuda ctx, gpu=1, flag=4...
[2017-10-18 12:32:54 P23976-T24004] [tranmain] E: failed to create nvenc ctx for gpu=1, flag=4, res=2
[2017-10-18 12:32:54 P23976-T24004] [tranmain] E: failed to create cuda context, gpu=1, flag=4 
The res=2 flag means that NVENC ran out of memory and couldn't create proper amount of contexts for content processing.

You need to follow this instruction to enable context caching and create contexts up-front before starting Nimble Streamer with Transcoder. The number of contexts to be created is defined by your hardware. You can find proper number by doing some testing as follows:

  1. Set up some minimum number of contexts then start Nimble and try transcoding some stream.
  2. Check logs to see if you get errors.
  3. If you don't have errors, you can increase the number and repeat steps 1 and 2.
  4. If you have errors, you need to decrease the number step by step until you don't get errors.

Or you may start with some big number of contexts and decrease it step-by-step until the errors are gone. You will end up with some number of contexts which you can use for your scenarios with your current hardware.

Q7: Failed to encode, status 10


You may see these messages when using NVENC:
[2017-10-16 10:58:36 P138405-T141721] [encoder] E: failed to init encoder=0x7f1b540008c0, status=10
[2017-10-16 10:58:36 P138405-T141721] [encoder] E: failed to encode video frame for [live/stream_1080]
[2017-10-16 10:58:36 P138405-T141721] [encoder] E: failed to flush nvenc encoder
This also indicates too many contexts in use. Please refer to Q5 for more details on how to use context cache and find the right number of contexts.

Q8: Video and audio are un-synced


Sometimes streams are published to external destinations like Akamai or other CDNs with un-synced video and audio. This may be caused by the originating encoders.

Try applying interleaving compensation to your streams to eliminate the un-sync.


Feel free to contact us if you have any other questions or issues with Live Transcoder.

Related documentation


Live Transcoder for Nimble StreamerBuild streaming infrastructureTranscoder web UI previewLive Streaming featuresBuild streaming infrastructure,

October 1, 2017

Softvelum 2017 Q3 news

Third quarter of 2017 is now over so it's time to make a summary of what our team has accomplished.

General announcements


Notice that we've improved our Terms of Service, please have a moment to read them. Notice that it refers to Before you post a question to helpdesk article - this is what you'll need to get familiar with prior to sending a question to our team.

Another general improvement: WMSPanel now supports two-factor authentication which can be enabled per-user.

A few words about the money: FastSpring, our payment gateway, now accepts UnionPay. So it's yet another way to pay for our products.

As always, take a moment to read our State of Streaming Protocols to see how the streaming landscape technologies are currently used among our customers. Spoiler: DASH keeps rising, HLS goes a bit down, SLDP gains momentum.

Nimble Streamer



First, we're glad to announce an article in Streaming Media by Jan Ozer about our Live Transcoder:
Review: Softvelum Nimble Streamer Is Flexible and Well-Featured
We appreciate Jan sharing his opinion and we'll keep improving our products per his feedback.

Now let's check new features.

Our team continuously improves SLDP low-latency streaming technology.

SLDP HTML5 JavaScript SDK for creating low latency HTML5 players is now available for licensing in addition to existing mobile SDKs.

Other SLDP updates you may find useful:
SRT streaming technology, originally created by Haivision and opened to open-source community, is now available in Nimble Streamer. It's a protocol which adds reliability to UDP transmission with error correction, encryption and other features which make it a great method to deliver live content across unreliable networks. Softvelum was also among first participants of SRT Alliance to take part in improving the protocol.
You can enable SRT in Nimble by installing SRT package and making respective settings.

Speaking of new protocols, UDT streaming protocol is now available in Nimble Streamer. Read this article for setup details.

Live Transcoder has been updated: VP8 and VP9 decoding and encoding are now supported. Read this article for more details about setup and usage. VP8 was also added to VA API implementation in our transcoder to give more flexibility.

Other interesting Nimble Streamer updates are:


Mobile Streaming


The last but not the least.

Mobile playback solutions are now available among our products.
This includes SLDP Player apps for iOS and Android, as well as respective SDKs for adding playback capabilities into your own apps. Currently SLDP and RTMP protocols are supported.
Free apps are available in Google Play and AppStore.

Mobile streaming products were updated with multiple improvements on Android, iOS and Windows Phone. This includes Larix Broadcaster and Larix Screencaster apps as wells as respective SDKs.
You can check the history of our mobile releases for all details of recent SDK releases.


Stay tuned for more features - follow us at FacebookTwitter or Google+ to get latest news and updates of our products and services.



September 30, 2017

The State of Streaming Protocols - 2017 Q3

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

Third quarter of 2017 has passed so let's take a look at stats. The media servers connected to WMSPanel processed more than 9 billion connections from 3400+ 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 Q3
The State of Streaming Protocols - 2017 Q3

You can compare that to the picture of 2017 Q2 protocols landscape:

September 21, 2017

Two-factor authentication in WMSPanel

Softvelum team is continuously improving the security and reliability of our products. As one of the steps, we now add two-factor authentication for accessing WMSPanel. Two-factor authentication (also known as 2FA) is a method of confirming a user's claimed identity by utilizing a combination of two different components.

In case of WMSPanel this means using user/password pair and then generate access code using your mobile device. So when you log into your account, you'll need to enter login information and then use your Android or iOS device to create 6-digit code and provide it to WMSPanel.

Here's how you can use this new security measure.

September 8, 2017

ABR live streaming setup

Nimble Streamer has wide Live streaming feature set which includes receiving streams via various protocols and generating output streams. Each stream can be transported via several protocols simultaneously, like HLS, MPEG-DASH, RTMP, SLDP, SRT etc.

Some protocols - HLS, MPEG-DASH and SLDP - support adaptive bitrate streaming (ABR) which allows a player to switch between streams with different bandwidth in case if networks conditions change over time. WMSPanel control web-service allows setting ABR for those protocols at Nimble Streamer using both pre-defined set of streams and wildcard pattern. Let's see how this can be done in our web UI.

Prepare streams 


Adaptive-bitrate stream is formed from a number of single-bitrate streams. Which means that you need to have at least two of those single-bitrate streams in order to make ABR.

Nimble supports a variety of protocols and they all have their outgoing streams setup specifics. E.g. if you use RTMP or RTSP, once you get incoming stream, you will get outgoing streams of the same name. For MPEG-TS, SRT and UDT, you need to define the outgoing streams directly as one channel may contain multiple streams. Check respective articles for setup details of outgoing streams.

Also notice that you can use Live Transcoder to create different resolution and bitrate streams from a single stream.

Once you have some streams to make ABR from, you can proceed with setup.

Go to Nimble Streamer -> Live Streams menu to open the list of servers.


There you need to look for the server you'd like to add new ABR stream for. Now either click on respective number of streams in "ABR streams" column or click on server name and chooso Adaptive stream on the opened page - those actions open the same page shown below.


At this page you can click on Add ABR setting to open the setting dialog for a new ABR stream. Both pre-defined and wildcard ABR are created in the same dialog.

Create ABR with pre-defined streams


In this picture you see typical ABR stream being set up.

New ABR setting dialog for predefined streams

ABR application name and ABR stream name fields allow setting the names which will later be used for playback URL - see the last section.

Source application name and Source stream name fields allow specifying which existing streams need to be used as part of ABR. As you type the name you will get suggestions from available streams. Bandwidth value will be used in a playlist by your player. If you select Audio only for a stream, it will not stream video, only audio part.

Advanced settings will open a drop-down list which will allow defining the sorting option for the streams in the result playlist.

You can see the list of servers in the bottom of the dialog which you can select. Current ABR setting will apply to those servers which you select by the check boxes

After clicking on Save button your settings to be synced with each selected servers within a few seconds.

Create wildcard ABR


Wildcard ABR is done in a similar way, the fields are the same. The difference is in streams' names.



Leave the stream name blank in ABR stream name field and use {STREAM} placeholder in Source stream name fields. This will allow getting any single-bitrate stream directly by its name.

For example, if you have source streams live/sport_720, live/sport_480 etc. you can access ABR as
http://server/live_wildcard/sport/playlist.m3u8
with respective single-bitrate chunklists as
http://server/live_wildcard/sport_720/chunks.m3u8 
http://server/live_wildcard/sport_480/chunks.m3u8
etc. They will be used by your player for playback.

Please notice that only 1 wildcard ABR setting can be created for 1 application. If you happen to create several ones, only one setting will be used.

Playback


Once the ABR streams are defined you will see them in the list.



Clicking on "?" icon (a question mark) will show a playback dialog where you'll be able to get the stream URL and test the stream in most popular players. You'll also be able to get sample code for those players for further embedding (with your own player licenses if needed).


The player will use full list of available bandwidths to show to the user.


Graceful adaptive bitrate


When the player starts the playback from ABR playlist it may select the stream which is most preferred for your current bandwidth. When the network capability changes, new chunks are started to pick up from the proper sub-playlist. The main playlist is continuously requested again to make sure it has latest changes.

During the playback, the RTMP streams' source may loose some of its incoming streams due to many reasons. A camera may shut down, a failure may appear within the encoder itself or some network may be unavailable for transmission. So one or more incoming streams may become unavailable for ABR streaming.

Nimble Streamer provides graceful handling of cases like that. When respective RTMP stream goes down, it is excluded from outgoing streams list, thus it's excluded from the ABR playlist. So when new player gets playlist the broken stream will not be there.

This behavior means that an end-user will have good user experience with no playback interruption.



When a broken stream gets back online, a player receives its description and starts using it in its workflow.




That's it - you can use this approach to create streams for any supported protocols.


Related documentation


Nimble Streamer, Live streaming feature set, Live Transcoder, ABR control API,

September 3, 2017

Before you post a question to helpdesk

Please notice that we've posted a new page describing common things which need to be checked before posting questions for our team:

Before you post a question to helpdesk


This is an addition to our Terms of service.

You have to follow the described steps before posting any issue reports to our team. If you have any questions regarding this guide, contact us.

August 28, 2017

Splash image, MP3 and other settings of SLDP HTML5 player

Our company keeps improving HTML5 player for our low latency protocol - SLDP. You can find protocol overview in this page and some basic setup and usage described in this article.

We've got some updates for you that might be interesting.

Splash image


You can now define the splash screen image which is shown before a user initiates the playback.
It's defined by splash_screen parameters.


MP3 support


We've added MP3 audio codec support for Safari and Firefox. Check also audio-related features of Nimble Streamer in addition.

Multiple instances


SLDP player may now be used in multiple instances on the same web page.
You use container parameter for each instance to specify proper element to show the player in.

Disabling ABR


By default, if your initial stream has multiple channels (e.g. renditions), they will be shown in the list of channels in ABR settings.
However you can lock specific player on a specific rendition using adaptive_bitrate parameter. It's "true" by default. You can set it to "false" to lock the rendition, in his case the initial_resolution parameter will be used to determine the default stream, and if it's absent then the lowest resolution will be taken.

You can see these and other parameters of our HTML5 player on this player page.

Take a look at the answers for frequent questions to improve your SLDP usage and visit SLDP website and contact us in case of any questions.

Related documentation


SLDP low latency streaming, SLDP Player, Live Streaming via Nimble Streamer, Live Transcoder for Nimble Streamer,

August 21, 2017

Review: Softvelum Nimble Streamer Is Flexible and Well-Featured

Recently Jan Ozer, a leading expert on H.264 encoding for live and on-demand production, and a contributing editor to Streaming Media Magazine, has published a full review our Live Transcoder:

Review: Softvelum Nimble Streamer Is Flexible and Well-Featured
The overall impression is very good although he found some things to improve in our products.

We'd like to thank Jan for sharing his opinion, it gives us a great feedback and inspiration.

Feel free to share your thoughts in your own blogs, we appreciate any feedback from our users.

August 20, 2017

Streaming Media Readers' Choice Awards 2017

The Streaming Media Readers' Choice Awards 2017 voting has been started to get industry opinions on the best solutions on the market.

Our company is presented in 2 nominations and we hope to get your votes. Here's a brief instruction how to proceed.

1. Find and vote


Go to voting page here, enter your name and contacts to see the full list of nominees.

Find Softvelum products in the following nominations:

1. Encoding Software: Nimble Live Transcoder.
Jan Ozer has a comment in his latest article called Review: Softvelum Nimble Streamer Is Flexible and Well-Featured: "The product, which has been nominated for a Streaming Media Europe Readers’ Choice Award, seems like a real winner to me.

2. Media Server: Nimble Streamer.
Well-known media server, the finalist for Best Innovation category in European Reader's Choice Awards of 2016, is now nominated again with more useful features and latest technologies on board.

We hope you enjoy our products and will choose them in the list.

2. Confirm your vote


You'll receive an email asking you to confirm your vote (to prevent automated ballot-box stuffing). Be sure to confirm, or your vote won't count.

Voting closes September 25.

Winners will be announced November 3 at Streaming Media West.


Thanks for being our loyal customers, looking forward to getting your votes.


August 14, 2017

Setting UDT in Nimble Streamer

UDP-based Data Transfer Protocol (UDT) is a high-performance data transfer protocol designed for transferring large amounts of data over high-speed wide area networks.

UDT is designed for extremely high speed networks and it has been used to support global data transfer of terabyte sized data sets. Concurrent UDT flows can share the available bandwidth fairly, while UDT also leaves enough bandwidth for TCP.

Nimble Streamer has full support for UDT:
  • Both Push and Listen delivery modes are supported.
  • Both Listen and Pull receive modes can be used to get UDT streams for further processing.
  • Rendezvous mode for sending and receiving is supported.
  • Multiple streams can be sent via single UDT channel.
  • Mux rate can be set correctly - Nimble Streamer has 100% PCR accuracy, 0ns PCR drift and PCR interval <20 ms according to StreamGuru. This is typically used for precise testing of channel throughput.
Using Nimble Streamer transmuxing engine, you may create any supported live protocol output from UDT and receive any of them to create UDT.

Let's see how UDT can be enabled and used in Nimble Streamer.

August 8, 2017

Use SLDP player latency tolerance against environment glitches

Our company keeps improving new real-time low latency protocol called SLDP. It provides quick start and sub-second delay for live streaming delivery. You can find protocol overview in this page and some basic setup and usage described in this article.

One of the features of SLDP is an ability to keep up with live stream without delays regardless of environment glitches. Let's take a look at this capability more closely.

August 4, 2017

Using offset to decrease start time in SLDP player

Recently we introduced new real-time low latency protocol called SLDP. It provides sub-second delay for live streaming delivery for the cases when it's truly important. Some basic usage of SLDP protocol is described in this article.

One of the key features of SLDP is a quick start of a stream on a client side. Typically the best way to reduce start time is to set GOP size to 1 second or less. This can be done with any transcoder, e.g. Nimble Live Transcoder. This will increase bandwidth however so you need to reach some balance between start time and traffic consumption.

So if you cannot make that GOP size reduction, SLDP has an offset player parameter which allows affecting the start-up behavior. The following description shows how you can use it for your use cases.

Typically, a playback starts with a key frame of each GOP (group of pictures) as the player cannot start decoding and processing without the key frame information. This means a delay between the start of connection and the start of the playback and it may be several seconds, depending on the encoding settings - all this time a viewer will see a black screen waiting for a picture. This is what needs to be avoided, let's see how this can be avoided.

July 27, 2017

VP8 and VP9 support in SLDP HTML5 player

Our customers keep adding our new real-time low latency protocol SLDP into their streaming workflows as it allows sub-second delay for live streaming delivery. Some basic usage of SLDP protocol is described in this article which describes typical usage scenarios.

People ask us about adding new capabilities into SLDP technology. One of them is adding VP8 and VP9 codecs - those are open and royalty free video coding formats developed by Google. Nimble Streamer Live Transcoder now supports these protocols transcoding in addition to already supported VP8/VP9 transmuxing feature set.

SLDP is codec-agnostic protocol so in order to have full support for VP8/VP9 from source to the viewer,  we only needed to add it into our HTML5 player.

So today we'd like to announce that VP8 and VP9 support was added into SLDP HTML5 web player. This type of playback fully depends on platform support, so it can be currently played in Chrome, Firefox and Opera and possibly in Microsoft browsers over time.

You can use SLDP for streaming in various bitrate modes. First you can stream single-bitrate VP8/VP9 if you know your target audience can play it.

Another option is to create ABR group to include streams encoded with both H.264 and VP8/VP9. In this case our SLDP HTML5 player will choose stream with H.264 codec if target browser or platform doesn't support VP8/VP9 playback. That would give you capabilities for flexible delivery of your content to multiple platforms.

We'll be adding other codecs support per our customers' requests so please contact us to get help or suggest new features.

July 24, 2017

Publishing stream to Periscope

RTMP republishing is widely used by Nimble Streamer users to deliver live streams to various types of destinations, including other media servers, CDNs, YouTube or Twitch.

Periscope live streaming platform also takes RTMP streams as input so our customers use that as a target too. As Periscope requires some additional stream setup, we've created a dialog in our UI to cover that use case.

As a source for your stream you can use any delivery method supported by Nimble Streamer.


Once the input stream is taken by Nimble, you can perform a setup for publishing it to Periscope.

July 18, 2017

Transcoding VP8 and VP9 in Nimble Streamer

VP8 and VP9 are open and royalty free video coding formats developed by Google. Nimble Streamer Live Transcoder now supports these protocols transcoding in addition to already supported VP8/VP9 transmuxing feature set.

Live Transcoder allows performing both decoding and encoding.

To receive VP8 and VP9 for transcoding, Nimble Streamer allows processing RTSP from published and pulled sources. The result stream can be delivered using RTSP protocol as well.

July 7, 2017

Vote for Softvelum

The Streaming Media European Readers' Choice Awards 2017 voting has been started to get industry opinions on the best solutions on the market. Last year we were selected as the finalist for best streaming innovation for Nimble Streamer. Let's see what we get this year.


Our company is presented in 4 nominations and we hope to get your votes. Here's a brief instruction how to proceed.

1. Find and vote


Go to voting page here, enter your name and contacts to see the full list of nominees.

Find Softvelum products in the following nominations:

  1. Best Streaming Innovation: Nimble Live Transcoder
  2. Mobile Video App or Solution: Larix Broadcaster
  3. Server Hardware/Software: Nimble Streamer
  4. Transcoding Solution: Nimble Live Transcoder

We hope you enjoy our products and will choose them in the list.

2. Confirm your vote


Voting closes on August 1st, and at that point, all voters will receive an email asking them to to confirm their votes; only these confirmed votes will be counted.

The finalists will be announced on 15 August, and the winners will be announced in the Autumn issue of the European edition of Streaming Media magazine.


Thanks for being our loyal customers, looking forward to getting your votes.

July 6, 2017

Setting SRT in Nimble Streamer

Secure Reliable Transport (SRT) is a transport technology that optimizes streaming performance across unpredictable networks. It's applied to contribution and distribution endpoints as part of a video stream workflow to deliver the best quality and lowest latency video at all times.

As audio/video packets are streamed from a source to a destination device, SRT detects and adapts to the real-time network conditions between the two endpoints. SRT helps compensate for jitter and bandwidth fluctuations due to congestion over noisy networks, such as the Internet. Its error recovery mechanism minimizes the packet loss typical of Internet connections. AES 128/256 bit encryption is also supported for end-to-end security, keeping your streams safe from prying eyes.

Our company, Softvelum LLC, became a member of SRT Alliance which is a group dedicated to managing and supporting the open source implementation of SRT. This alliance is accelerating interoperability of video streaming solutions and fostering collaboration with industry leaders to achieve lower latency Internet video transport. Softvelum is actively contributing to the community to improve the protocol and its ecosystem.

Nimble Streamer has full support for SRT:
  • Both Push and Listen delivery modes are supported.
  • Both Listen and Pull receive modes can be used to get SRT streams for further processing.
  • Rendezvous mode for sending and receiving is supported.
  • Custom "latency" and "maxbw" parameters are supported for fine tuning.
  • Multiple streams can be sent via single SRT channel.
  • Mux rate can be set correctly - Nimble Streamer has 100% PCR accuracy, 0ns PCR drift and PCR interval <20 ms according to StreamGuru. This is typically used for precise testing of channel throughput.
  • AES 128 bit encryption provides stream security.

Using Nimble Streamer transmuxing engine, you may create any supported live protocol output from SRT, as well as receive any of them  to create SRT.

Let's see how SRT can be enabled and used in Nimble Streamer.

July 2, 2017

2017Q2 news

Second quarter of 2017 is over so it's time to see what our company has been doing. As you can see below, we've released some new products that might be interesting for you.

Before getting to the updates, here are a couple of announcements you'd like you to take a look at.

First, check our team's opinion on the business competition in our industry. It's an answer to a frequently asked questions so please read it and make your own opinion.

If you plan attending IBC 2017, keep in mind that our team representatives will be visiting the trade show. So if you'd like to meet us, just drop us a note.

As always, take a look at The State of Streaming Protocols for 2017Q2. You'll see a couple of interesting points there.


Also, if you find our products useful, please find some time to vote for Softvelum solutions in European Readers' Choice Awards 2017.

SLDP


Softvelum Low Delay Protocol is a new technology for reducing the latency for last-mile delivery for end-users. It's based on WebSockets for better accessibility. The core features are
  • Sub-second delay between origin and player.
  • Codec-agnostic
  • ABR support
  • HTTP and HTTPS on top of TCP
  • Buffer offset support

Take a look at SLDP usage description and also most frequent questions that show the protocol best practices.
In addition to low latency, SLDP provides great level of live streams protection, read this article for more details.

Server side is support is available in Nimble Streamer while client side is covered by SLDP PlayersWeb player is working in any MSE-enabled web browsers on desktop and connected devices. Android native player is coming soon, while iOS player and SDK are already available and is described below.

Mobile solutions


We've released playback SDK for iOS. You can use RTMP and SLDP playback in your iOS apps. Use this page to subscribe for obtain SDK and get upcoming updates.

SLDP Player sample app is also available in AppStore, you can use it for playing any RTMP and SLDP links. Its sources are also available in iOS SDK.

Larix streaming SDK also has several updates.

First, take a look at mobile SDK FAQ to see answers you might be looking for. It's being updated so if you miss anything - just let us know. 

Limelight has released a how-to about using Larix Broadcaster with its delivery network.

Android and iOS streaming SDKs have several important updates.

iOS got the following

  • Bluetooth support
  • afreeca.tv publish fixed. It requires max bitrate as 2000 Kbps according to service requirements.
  • Connectivity improvements
Android has the same set of updates and features.

You can check all releases' description in these release notes and proceed with subscription here.


Nimble Streamer and Transcoder


Before exposing big updates, here's a feature you were waiting for: HLS input for processing. So now you can pull HLS stream to transmux it to other protocols like RTMP or even use it for further transcoding.

Here are a few big updates.

HEVC transcoding is now available in Live Trasncoder in addition to HEVC transmuxing.

  • You can decode HEVC using NVENC and QuickSync as well as software decoder.
  • Encoding can be done with NVENC and QuickSync.

Read more about NVENC encoding and QuickSync encoder parameters. Also, QuickSync setup description was updated with Media Server Studio 2017.

Speaking of new codecs, Live Transcoder now can encode audio to MP3. So now it's possible to transcode your live audio from AAC, MP3, Speex, PCM and MP2 into MP3.

Read more about codecs support in Nimble Streamer and its Live Transcoder

Other major update for transcoder is streams' hot swap with Live Transcoder. It now allows using the following opposite scenarios:

  • Streams failover hot swap where main stream is backed up by secondary stream in case of publication fail.
  • Emergency swap where main stream is replaced with some replacement stream when it becomes available. This is used in cases like US Emergency Alert System (EAS).

The streams are swapped without streams interruption so user playback will not be affected.

Last but not least: we've added new capabilities to give granulated control to end-users. We've separated control features and you can give access to particular capability. Read this article for details.



Stay tuned for more features - follow us at FacebookTwitter or Google+ to get latest news and updates of our products and services.



June 30, 2017

The State of Streaming Protocols - 2017 Q2

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

Second quarter of 2017 has passed so let's take a look at stats. The media servers connected to WMSPanel processed more than 8.6 billion connections from 3400+ 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 Q2

You can compare that to the picture of 2017 Q1 protocols landscape:

The State of Streaming Protocols - 2017 Q1


In the 1st quarter of 2017 it had being collected from 3300+ servers.

What can we see?
  • HLS went down to 60%. 
  • RTMP increased its share again, it's nearly 16%. 
  • Progressive download also went up to 8%. 
  • MPEG-DASH is currently 5% which is twice bigger than last quarter. 
So despite of wide use of progressive download and MPEG-DASH for VOD content, people still need low latency, this is the main cause for introducing SLDP by our team. It's a low latency protocol which our customers use for latency-critical cases like chatting, security or bidding, they also appreciate the built-in security features. This is why you see several thousands of viewers already consuming the live content via SLDP.


You can also check December summary of steaming protocols to compare with numbers from last year.

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

June 21, 2017

FAQ: SLDP tips and troubleshooting

Our new real-time low latency SLDP protocol is expanding among our customers so we get more questions regarding its usage.

Some basic usage of SLDP protocol is described in this article. It describes typical usage scenarios, however there are always some things to improve your use cases and give better user experience. The following frequently asked questions help improving that.

June 15, 2017

SLDP Player: iOS SDK for RTMP and SLDP playback

Our company is continuously improving its mobile solutions. They already include SDKs for streaming from mobile devices via RTMP and RTSP along with corresponding Larix Broadcaster and Larix Screencaster free apps.

Our customers are also interested in adding playback capabilities into heir applications. So today we introduce SLDP Player SDK for iOS.

It allows playing streams as follows:

  • RTMP is a commonly used protocol for live streaming to end-users devices so now you can use it in your apps.
  • SLDP is the low latency real-time streaming protocol. This protocol allows delivery of media with sub-second latency at the end-users' devices. Now you can add playback capabilities for having low delay streaming to your users' iOS devices.
  • H.264 video and AAC audio media types are supported as in iOS platform itself.
You can try it in action using SLDP Player free application.



Visit our website to subscribe to our mobile SDKs.


We'll soon release Android version SLDP Player, so stay tuned for updates.

Related documentation


June 12, 2017

SLDP proprietary streaming protection

Our company has released SLDP - the low latency real-time streaming protocol. It allows delivery of media with sub-second latency at the end-users' devices.

SLDP is a proprietary solution created with security in mind to make sure your content is delivered efficiently and safe.

SLDP has its own data transfer algorithm so media server and a player both control data transmission and their algorithms are not visible to the outside observer. This is why it's not covered by any modern stream grabbers. So your stream is not intercepted by anyone but played well in the player.
If it's grabbed by any software, our team will modify both parts of delivery mechanism - server and player - to cover these new circumstances.

Learn more about SLDP


One more option on top of that is to use SSL connection for transfer. This will prevent your stream's data from sniffing. Nimble Streamer allows enabling SSL for outgoing connections, this will cover SLDP as well. Your URL for our players will have wss:// prefix instead of ws:// in this case.

And of course, you may apply any feature from our paywall feature set which includes hotlink protection, geo-location and IP range block, pay-per-view framework and some other capabilities. Visit our paywall page to see all capabilities.
Bottom line: use SLDP to securely transfer your live streams.
Your media will be delivered with high security and low latency.


You can try SLDP in action any time by installing Nimble Steamer. Feel free to contact us for any questions.


Take a look at the answers for frequent questions to improve your SLDP usage.


Related documentation


SLDP low latency streamingPaywall feature set, Live Streaming via Nimble Streamer,

June 10, 2017

FAQ: Larix mobile broadcasting SDK

As long as we provide mobile broadcasting SDK, we get a number of typical questions regarding its capabilities and use cases. Let's take a look at most frequent ones and have them answered.

June 7, 2017

HEVC support in Nimble Streamer Transcoder

HEVC (H.265) is a high-efficiency codec, best fit for high resolution video like HD, 4K and 8K streaming. Nimble Streamer Live Transcoder now supports HEVC transcoding in addition to already supported transmuxing feature set.

Live Transcoder allows performing both decoding and encoding of HEVC.

To receive HEVC for transcoding, Nimble Streamer allows processing 
  • RTSP from published and pulled sources;
  • MPEG-TS via both UDP and HTTP. 
The result stream can be delivered using


Decoding


The following methods are currently supported for decoding HEVC content for further transformation:

Encoding


Currently the encoding is performed only via hardware acceleration by Quick Sync and NVENC.

Easy control


Live Transcoder has easy to use Web UI which provides drag-n-drop workflow editor to apply transcoding scenarios across various servers in a few clicks.
With FFmpeg filters you can transform content in various ways, e.g. change the video resize, make graphic overlays, picture-in-picture, key frames alignments, audio re-sampling etc.



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

Related documentation


Live Transcoder for Nimble Streamer, Audio streaming features, Build streaming infrastructure, Transcoder web UI preview, Live Streaming features, Build streaming infrastructure,