Adaptive bitrate, Live Mobile Video streaming with Wowza media Server 3.0 and Wowza Transcoder

Today, I had set up a Wowza Media Server 3.0 for a  project that required Live streaming from the Cloud with on the fly transcoding of the live streams dynamically for multiple devices (dynamic multibitrate video streams) and wanted to share some thoughts.

Wowza’s 3.0 with the Transcoder add on provides a very powerful means to deliver Live video streaming to multiple screens or devices   (desktop,iPhone,iPad,Android,BB) and the deployment of Wowza on a cloud service like Amazon AWS  provides a very effective means to deliver this.

Wowza 3.0 with its on the fly transcoder add on, delivers a H.264 , AAC  live video stream . In the transcoder, you can define multiple bitrates and screen resolution sizes based on the screen type and quality of video , for instance, A medium bandwidth live stream at  350 kbps at 160 P for mobile devices.

The Wowza Transcoder  provides a method to group streams at different bitrates together in logical groups for live playback called Stream Name Groups. These groups can be defined using the ngrp: stream name prefix for adaptive bitrate delivery.

To play using an Apple iOS device (Cupertino/Apple HTTP Live Streaming): http://[wowza-ip-address]:1935/live/ngrp:myStream_all/playlist.m3u8

To play using Adobe Flash player (San Jose/Flash HTTP):

The good thing about ngrp and manifest player link methods  is , the player will automatically process the .f4m manifest and accordingly play the video bitrate as per the user bandwidth. There is also a provision to use the SMIL based configuration .

The Multibitrate Live streaming works well on the  OSMF Flash player

Here is a video snippet of the OSMF play

Wowza Media Adaptive Multibitrate streaming on OSMF Flash player

I tried playing the Live stream  on the JW Player which is my favorite one, But it wouldn’t work. I suspect JW player doesnot support reading the .f4m manifest

One of the critical observations is that Wowza’s on the Fly Live transcoding  along with the streaming server requires a lot of processing power. It works on a 64 bit Windows as well as Linux server . I was using a 64 bit Windows 2008 R2 server .

A test on a Single core Xeon processor 2.33 GHZ with 8GB RAM (with JVM heapsize set at 3GB at the start up) , just kept the server consistently at 100% load and I got a very flaky live stream with a lot of buffering and stuttering. Actually nothing worked at this capacity.

I had to change the AWS Cloud server to a High CPU,High Memory instance to get it streaming properly. So , transcoding on the fly is a very heavy duty job that demands considerable CPU power. I would suggest anyone trying out to first do a thorough capacity planning and testing on the server(s)  before running in to production.

Also evaluating origin-edge streaming topology for distributing the live stream load is a good idea based on requirements.

For device playbacks ,Please check below link on the Support for H.264 codec on the mobile browsers
Wowza transcoded video is a H.264 codec based output

To summarize, Wowza media server with Transcoder deployed on elastic cloud servers enables low barrier, low cost Adaptive multi-bitrate Live video streaming for Multiple screens/devices (Desktop flash, Android,iPhone iOS)


About Cloudshoring

Cloudshoring is a popular blog on Cloud computing and Big data
This entry was posted in Cloud Computing and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s