January 25, 2017

Binding un-synced video and audio sources in Live Transcoder

Live Transcoder for Nimble Streamer has wide range of content transformation features which can be used in transcoding scenarios.

Some scenarios may require to take unrelated and un-synchronized sources of content and bind them together into a synchronized stream. This capability covers some major use cases like the following to name just a few:

  • YouTube doesn't accept audio-only and video-only content, so you need to add missing video/audio in order to comply.
  • Take video stream (e.g. a game footage) and put commentator's voice on top.
  • Online radio graphics overlay: take Icecast online radio stream, put still picture as video and publish it on a website or an external CDN so common video player could play sound and has was visual representation.
  • Take surveillance camera video stream, insert some sound of silence from MP3 or MP4 file and publish it to external destination - like aforementioned YouTube or CDN.

Nimble Streamer Transcoder is currently capable of both transforming file content for further live streaming usage and synchronizing it. Let's see how you can do this.

Installing Nimble Streamer Live Transcoder


First of all you need to have Nimble Streamer installed, as well as Live Transcoder


You can check basic principles of Transcoder setup using our video tutorials in this playlist.

Engaging graphics and on-demand content into live transcoding


Nimble Streamer can transform the following file types into live stream:

  • GIF
  • PNG
  • JPEG
  • BMP
  • TIFF
  • MP4 container with H.264 video and AAC or MP3 audio
  • MP3 audio files for audio streams

Video decoder


To use files in transcoding scenario you need to add the video decoder element to your scenario and choose File as decoding source as shown below.

Adding picture as a source for video decoder
You will see File path input field for entering full local path to a source file.

Notice that only local file path is supported, HTTP is not yet supported.

For still images (GIF, PNG, TIFF, JPEG) the FPS field specifies the key frame rate which will be used for video stream. In case you have GIF animation and its frame rate differs from the one you specify, then its playback speed will be higher or lower. E.g. if you have 15 images per second in your GIF and set FPS field to 30 then your GIF will be animated twice faster. The Stream ID parameter is ignored for still images.

For MP4, the FPS parameter will be ignored while Stream ID can be used in case you have multiple video tracks. In that case you will just set the value to track number, starting from 0.

The Decoder field is used for defining the engine used for decoding the input - currently it's either Default software decoder or NVidia. Read more about software decoder threads and NVidia decoder settings. The Threads field is used for software default decoder.

Audio decoder


Audio source is set similar way. drop Audio decoder element to the scenarios workspace and choose File.

Adding audio file as a source for audio decoder

You can specify File path to audio content. If you use MP4 with multiple audio tracks as audio source, you can specify the Stream ID to set it.

As mentioned before, only local file path is supported.

Synchronizing sources to audio


Having any source of video which is not in sync with audio, you can bind them together. This might be streams from file content which we described earlier. Also that might be original live streams from different sources which you need to be in sync in order to be played by all major players.

There are 2 major approaches for syncing streams - you can either sync audio to video or sync video to audio. The difference is about which stream will be used a primary source for timing synchronization.

Video to audio



This is the preferred option when you have audio as your main source of content and you need some auxiliary video to be shown. A good example is online radio streamed via Icecast which you want to publish to some delivery service which requires both audio and video in their streams, e.g. CDN or YouTube.

You need to create scenario as shown below.

Binding picture to audio stream

As you see you have audio passthrough for audio and then a decoder input created per "Engaging graphics..." section above. Video pipeline also has scaling filter to make a picture match designated size.
The encoder set up is shown below, check out Sync related streams field. It appears if you click on Expert setup link.

Encoder settings for video made from a picture

Sync related streams field needs to be set to Video to audio value. If you save this encoder and then open audio encoder settings, you will see that this field has also been set up to the same value to avoid sync-up collisions.

You can see audio being passed through, however you can create any other audio pipeline, including filtering etc.

Watch this video to see how this scenario is set up step-by-step:


You can find it in our YouTube channel.

Audio to video


This sync-up can be used when you have a source of soundless video which needs to be accompanied by some audio track. Surveillance camera streaming a good example for this.

The setup is similar - check scenario below as example taken from Audio decoder section above.

Binding audio file to video stream

Here you see video passthrough as video content is not touched and then audio created from file and encoded separately. The encoder setup is shown below.

Encoder settings for audio made from a file

Here you see Sync related streams field set as Audio to video.

Like in previous scenario, you can see video being passed through, however you can create any other audio pipeline, including filtering etc.


Watch this video to see how this scenario is set up step-by-step:




You can find it in our YouTube channel.



"Equalize-only" scenario


Of course you can synchronize video and audio from original live streams. This can be used when you do a voice-over with comments etc. The setup looks like this - just make sure both output streams names are the same.

Passthrough-only scenario to bind audio and video

And either audio encoder or video encoder need to have Sync related streams to either or two mentioned values - Audio to video or vise versa.

Encoder settings to bind audio to video stream.

This is basically how you can easily set up streaming from file sources and make streams synchronization.

Check this video for step-by-step instruction:





You can find this and other tutorials on our YouTube channel.


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

Related documentation


January 1, 2017

Year of 2016 overview

Happy New Year!


We wish you and your company all the best in the new year of 2017!

To celebrate this upcoming year, we would like to make a summary of what was done during past 12 months of 2016.

You might have noticed the mention of Softvelum, LLC in many updates. That's right - we've grown from a startup established in 2011 into a technology company so this incorporation was performed to build a platform for further activities. We've been strengthening our team this year and we're ready for new challenges!
As a company, we're honored to have Nimble Streamer as a finalist of Streaming Media Europe Readers Choice Awards 2016 in the "Best Streaming Innovation" nomination!
We appreciate this acknowledgment and we'd like to thank everyone who voted for us.

Before getting into products summary, let's take a look at the State of Streaming Protocols for 2016. It shows current status of streaming technologies and compares it to the data back from 2015.

Now, let's see what was new in our products set.

Nimble Streamer


Our flagship product was continuously improved through the year. Here are most notable enhancements from what was implemented.

Nimble Streamer is now available for ARM architecture and its installation packages are built for for Raspberry Pi / Orange Pi / Odroid.
Read this page for all details regarding Nimble Streamer embedding capabilities.

Transmuxing engine was improved to improve performance and take more codecs as input. New codecs include H.265, VP6, VP8 and VP9 as video input with AC3, E-AC3, Speex and PCM G.711 for audio input. This gives more capabilities for broadcasters who receive media from various source and want to bring it to the internet viewers.

Icecast transmuxing was also added into common engine and now it allows taking AAC audio from any input stream and deliver it both as playback stream and as republished stream. You can also define metadata for any outgoing Icecast stream. Read more about current audio streaming feature set here.

DVR feature set was also improved through the year to improve performance and also get timeshift scheduled recording.

Subtitles support was added for VOD streaming to follow with multiple customers requests.

Nimble control API was significantly improved, it now covers full set of operations that are available via web UI. Also, Nimble status native API was updates with new calls.

Server control capabilities can now be granted to non-admin users by account administrators.

Paywall framework for Nimble Streamer was also improved with new blocking capabilities: by User agents and by Referer HTTP headers.

One more significant feature is Publish Control Framework. It allow setting full control over RTMP and RTSP streams publication process - you can apply your own business logic to any incoming streams. This is especially useful for people who create their own mobile broadcasting services as they need to find a way to control their content contributors.

Live Transcoder


We had many questions from our customers about content transformation in Nimble Streamer - like changing resolution, bitrate, graphics overlay and many other. So after technical and legal research, we've released Live Transcoder. It's a premium addition for freeware media server available via license subscription.

It supports multiple video and audio codecs for decode and encodes it into H.264/AAC output streams with codecs passthrough option.

After the content is decoded you can also apply wide variety of FFmpeg filters to transform the content as you need for your live stream. This includes changing the resolution, bitrate, profile, applying graphics overlay, adding picture-in-picture video and much more.

All operations are performed via excelled drag-n-drop web UI, you can check this playlist of videos to see it in action.

Besides software decoding and encoding, Live Transcoder supports Intel QuickSync and NVidia GPU hardware acceleration technologies. This allows combining flexible filtering, excellent UI and best hardware transcoding technologies into a single powerful product.

Visit Live Transcoder website to learn more about its capabilities.

Mobile SDK


Larix mobile broadcasting SDK was extremely popular during this year.

We improved feature sets for both iOS and Android to add highly required features - you can see list of major features here and also check Larix Broadcaster to see them in action.

After multiple requests we've released our mobile streaming SDK for Windows Mobile platform along with Larix Broadcaster WinPhone version. So now our SDK covers all popular mobile platforms.

We also used our streaming library in new app called Larix Screencaster - it's an Android application that allows streaming the content of your screen. This is helpful for game streamers, educators and all those who need to share their device screens to wide audience.

You can obtain latest SDKs using this purchase page in just a couple of steps .

WMSPanel


Our reporting and control panel was also improved with a new set of metric - Unique visitors. It allows calculating how many actual users were viewing your content within each slice and each file or stream in case of Deep stats usage.

WMSPanel stats API was also improved to return all available metrics with more convenient methods.


These are the basic updates but we've done a lot more than that - check our blog and website for more. You can use the new Search page which covers our resources.




We'll continue keeping you up-to-date with all new features and improvements.
Follow us at FacebookTwitter or Google+ to get latest news and updates of our products and services.