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 http://osmf.org/
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.
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)