January 22, 2018

Using Amazon EC2 for HEVC transcoding

Nimble Streamer Live Transcoder is currently used in various live transcoding scenarios on various platforms. It can be deployed both to bare metal and virtual servers.

When it comes to HEVC (H.265) transcoding, there are certain limitations you may face. H.265 encoding is resource consuming so Nimble Live Transcoder supports only hardware encoding which is currently implemented for NVidia NVENC and Intel QuickSync. So if your project requires to use some cloud computing platform with no bare metal, you need to find a provider which has hardware acceleration available as part of cloud services. Our customers ask us about such provider so we wanted to do some analysis about this this.

Choosing EC2

After some research we ended up with Amazon Web Services (AWS) and their Elastic Compute Cloud (EC2). Here's what we have.

First, we need to define what chips are capable of HEVC encoding. Take a look at NVENC Support Matrix to see which of the chips have proper support. Considering latest NVidia changes in GeForce drivers EULA, not many cards can do what we need.

Having the list of proper chipsets, check EC2 instance types.  There are two of them that meet our criteria.

  • G3 instances have Tesla M60 based on 2nd generation of Maxwell chip family, starting from 1.14 USD per hour.
  • P3 instances have Tesla V100 based on Volta chip family, starting from 3.06 USD per hour.

We ran some tests on g3.4xlarge instance type, it has Tesla M60 chipset on board which we tested previously on bare metal. This time it also showed great results being used in cloud environment.

Notice that not all regions have P3 and G3 instances available. We tested our case in US East N. Virginia region, you should manually check what is the closest region with required instance types.

Working with Live Transcoder

Good thing about running any EC2 instances is that you can pay as you go. GPU-powered ones may cost significant amount of money so the best strategy would be to run them only when live streaming event take place.
The best usage scenario with Softvelum products would be as follows:

  1. Sign up for WMSPanel account, subscribe for it and subscribe for Live Transcoder license.
  2. Sign up for Amazon EC2 account
  3. Create your EC2 server instance with your preferred OS. We made our testing with Ubuntu 16.04.
  4. Install official NVidia drivers, check their website for latest version for your OS.
  5. Install Nimble Streamer instance on EC2 and register it in WMSPanel.
  6. Install Live Transcoder and register its license.
  7. Set up Live Transcoder scenarios and test them with your live streams.
  8. Stop EC2 instance.
  9. Prior to your live event, start EC2 instance.
  10. Your instance IP address will be changed after re-start, so make sure you add new IP to ingest URLs at your stream source.
That's it - you can stop and start again your instance any time you need it.

Notice that you may need some fine tuning if you'd like to use NVENC on high load, e.g. when transcoding multiple incoming streams on multiple GPUs. Take a look at this article for more details describing previous stress testing procedures and their results.

Please also check Transcoder troubleshooting article describing some approached to NVENC usage.

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

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, HEVC support in Nimble Streamer, Live Streaming features,

January 14, 2018

Nimble Advertizer: server-side ads insertion for Icecast

Our online audio streaming customers often face the need for monetizing for their online radios and live podcasts. This should be done on a server side to provide best user experience and avoid ad-blockers usage.

Today Softvelum introduces Server-Side Ads Insertion (SSAI) framework for Nimble Streamer, it's called Nimble Advertizer. This framework allows dynamically insert personalized ads into live streaming content.

Advertizer key features are:

  • Pre-roll ads per each connection
  • Flexible timing setup for mid-roll ads
  • Per-stream ads insertion business logic
  • Personalized ads

Nimble Advertizer may use all input live protocols supported by Nimble Streamer, they are Icecast and SHOUTcast, RTMP, RTSP, SRT, UDT, HLS and MPEG2TS.
Live input codecs are AAC and MP3. Notice that with our Live Transcoder you may also use MP3, MP2, Speex, PCM G.711 (a-law, μ-law)
For your ads source files you may use AAC and MP3 codecs.

Output live stream protocol is Icecast - this is the most popular protocol for online radios.

The workflow is easy to adopt within any business logic

  1. Nimble Streamer media server processes incoming streams to get audio content
  2. Nimble Advertizer calls your handler web application to get business logic description
  3. Advertizer gets files with advertisements to process them via Nimble Streamer according to your logic defined via handler
  4. Nimble inserts the ads into original media and packages it into Icecast protocol
  5. End user connects to Nimble and gets audio stream containing original content mixed with advertisements
  6. Playback is running smooth regardless of ads insertion over time in any player which supports Icecast.

Server-side Ads Insertion framework (Nimble Advertizer) is a premium functionality which requires additional payments. Please check this page to get more details about functionality and pricing.

Related documentation

Ads insertion for HLS videoNimble StreamerAudio streaming features in Nimble StreamerLive Transcoder