Better option for live streaming: multiple Wowza servers/instances with dynamic load balancing or one Wowza instance with Cloudfront (assuming HTTP delivery of course)?
I have tested Cloudfront a few times now and find the performance of the live stream to be terrible. I may be doing something wrong but it’s pretty easy to set up, so I’m not sure. I have tried setting up and EC2 Wowza 4 and Cloudfront separate as well as using AWS Cloudformation for Wowza 4, both result in the same performance.
Going direct through the Wowza server with a .SMIL adaptive file (from Transcoder Add-On) works flawlessly, going from 160p at 300kbps to 360p at 1.5Mbps very easily (I have plenty of bandwidth to view). This is using the Live application on Wowza 4.
However, once I try to connect through Cloudfront to view using the HTTP Live Origin application, I have to use the Transcoder Add-On’s NGRP streams (ngrp:myStream_all), the stream has no bandwidth, buffers constantly, and is pretty much unwatchable. There is no .SMIL file option on the HTTP Live Origin application.
Has anyone else had this experience? Either the NGRP file is not behaving properly or Cloudfront is not working as it should. Cloudfront in theory is supposed to be the same, but clearly is not in my tests.
that the questions that puzzle me for a long time
I run 25 channels and when there’s football match, my stream started to buffering and skip frames.
My current setup is wowza ec2+ http origin -> cloudfront
I’m using cloudfront because of I’m only stream HTTP stream, HLS in particular
Did you test direct to EC2 ? Is it much better that way ?
Thanks for the head ups : http://:8086/medialist?streamname=ngrp:rtm-myStream_all&application=live&format=smil
Now doing curl -i to test the cache hit/miss
I finally got Cloudfront to work as expected. I can’t be 100% certain, but ‘stream groups’ (ngrp:myStream_all) seem to have a tough time being resolved on different players and delivery formats. I finally just created a .SMIL file manually and uploaded to instance in [install]/content folder. I subsequently found out you can do it through the GUI on Wowza 4, so either way works.
With a .SMIL file that matches the Transcoder Add-On outputs, you get performance as expected. I got very smooth playback and quality switches over a cascade of 8 bitrates from 300kbps to 5,000kbps.
One quick plug, the best player I have found for HLS Adaptive for Flash is the Grind Player by Kutu. He created an OSMF HLS plug-in and uses his own player for delivering HLS. I find it to be very responsive, great at dynamic switching of bitrates, and includes a great statistics panel for debugging. It’s not free ($399), but I highly recommend his work. You’re not going to get the support of a team like JW Player, but if you have some Javascript knowledge it’s more than doable.