Media streaming, webcam video hosting with EC2... possible with Wowza?

Hi everyone

We’ve been using S3 as an image dump for our web gallery for a while now and its been a revelation for us. The pay as you go usage is fantastic.

I’m hoping that EC2 can help us out with our next project. Took me a while to get my head round what EC2 actually was, but I gather it’s basically a rented VM where you pay for whatever you use. Sounds perfect!

Every year we host an event and last year we had a pair of webcams, but at this years event I had them set to just FTP upload a snapshot every 5 seconds or so.

It works ok, but for 2009 I’d like to have live video webcams running.

The webcams are Axis 207W IP cameras, and I can send the stream to remote servers using Flash Media Encoder or Windows Media Encoder.

We are also looking to do a 4 hour live camcorder broadcast of the final awards ceremony, and again we can stream this to the internet using Flash Media Encoder. During this we will probably turn off the webcams to ensure bandwidth is good for the camcorder upload.

Ideally I’d like to use Flash because the end user experience is better.

I did look at using a service like Mogulus (which uses AWS on the back-end I think) but the pricing levels they offer aren’t clear, and they don’t offer a pay as you go sort of usage.

The webcams and streaming will only be live for the duration of the event, 12 days absolute max, so it doesn’t seem worth taking out a whole monthly subscription account.

Also we won’t be using any storage for any of this.

I think most of the CPU intensive stuff will be done at our end, by the computers that will be transcoding the MJPEG/video streams and uploading to Wowza.

What I’m looking to achieve is that we’re only uploading one copy of each stream, then the streaming server handles the distribution to multiple users.

So I’d like to look into doing it ourselves rather than relying on a 3rd party service.

My questions:

  1. Is this something that Wowza EC2 will let us achieve?

  2. Would we need a separate Wowza instance/subscription for each camera?

  3. How many outgoing/viewer streaming connections can a Wowza instance handle?

  4. Is there any way we can estimate whether we need Large or Extra Large Wowza or high-cpu AMI instances?

Or will it just be a case of trial and error testing.

  1. Is there a way we can change a Wowza AMI instance from Large to Extra Large, or to high-cpu while we’re live if we need to?

When we broadcast the awards ceremony, the usage will be higher than with the webcams

  1. With Wowza EC2 prices mentioned on this page… https://www.wowza.com/ec2.php

Do we have to pay Amazon EC2 fees in our AWS account on top of those prices?

  1. The final piece of the jigsaw then is having a Flash player embedded into our website which connects users to the streams from the AMI. Anyone got any suggestions?

Anyone have any advice on this?

Is there anything that I’ve missed here?

Is all this possible with Wowza on EC2?

I really hope so, as the “pay for what we use” method will definitely be the cheapest option. We only need to have this set up for a couple of weeks, and a bit of testing.

Thanks, Ben

Wowza Pro for EC2 works very well for live video as you described. However, much more work is required than using a service such as Mogulus. EC2 is a “roll your own” solution–you will need to set up and manage all of the EC2 instances yourself. A certain amount of technical skill is needed. It is best to be familiar with both EC2 and Wowza Pro. Read all the documentation and get familiar with both systems.

Wowza Pro User’s Guide

Wowza Pro for Amazon EC2 User’s Guide

Amazon Elastic Compute Cloud (Amazon EC2)

To answer your questions:

  1. Is this something that Wowza EC2 will let us achieve?

Yes

  1. Would we need a separate Wowza instance/subscription for each camera?

Probably not. Depending upon the size of your audience, you would likely set up one instance as the “origin” that accepts the incoming streams and repeats them to the “edge” instances.

  1. How many outgoing/viewer streaming connections can a Wowza instance handle?

It depends upon the instance size and video bitrate. Total throughput needed is equal to the number of viewers times the video bitrate. A Small instance can handle up to 150 megabits/sec throughput. An Extra Large about 350 megabits/second. We have found that the throughput on the Small instances can vary significantly.

  1. Is there any way we can estimate whether we need Large or Extra Large Wowza or high-cpu AMI instances?

Or will it just be a case of trial and error testing.

I’d recommend Large/Extra Large. No need for high-CPU.

  1. Is there a way we can change a Wowza AMI instance from Large to Extra Large, or to high-cpu while we’re live if we need to?

When we broadcast the awards ceremony, the usage will be higher than with the webcams

The best way to handle the additional load is to have extra instances running and add as needed.

  1. With Wowza EC2 prices mentioned on this page… https://www.wowza.com/ec2.php

Do we have to pay Amazon EC2 fees in our AWS account on top of those prices?

No. Those prices include the Wowza Pro license fee and the EC2 charges for alll instances running Wowza Pro for EC2

  1. The final piece of the jigsaw then is having a Flash player embedded into our website which connects users to the streams from the AMI. Anyone got any suggestions?

JWPlayer is very popular.

Sounds great.

  1. So I pay Wowza all the fees rather than Amazon, even though its all running on our AWS account. That sounds fine…

Do I pay a $5 per month for each instance?

Or is it just $5 for all of them? So if I had 5 L instances, it would be $5 per month plus the data+compute time I managed to rack up.

You actually pay Amazon, not Wowza. Amazon handles all billing, collection and reporting. The price you pay is as set by Wowza. Wowza pricing, Amazon billing & collections.

The $5 monthly charge is a flat fee for subscribing to Wowza Pro for EC2. It is not per instance. You are correct in that the monthly bill is $5 per month plus the data+compute time charges.

  1. The 2 camera streams will be uploading 120Kb/s max each from Flash Media Encoder

So 2 cameras, means we’ll be uploading 240Kb/s = 30KB/s… for 24 hours for 13 days equals 33.696GB * $0.12 = $4.04 of inbound data charge

Is my method of working that stuff out correct?

Sounds right.

  1. Is there a method where we can be monitoring what charges we are building up over the week?

Obviously slightly delayed info, but it would give us a ballpark figure. Then I could gradually tweak bitrates and video sizes throughout the week.

All this is handled by Amazon as they handle all billing, collection and reporting. . You can find the current charges on your AWS account at Your Account > Account Activity and the usage details at Your Account > Usage Reports.

On regional data transfer, basically, if your S3 and EC2 instances are in the same “availability zone,” all transfer between S3 and EC2 would be free. If not in the same availability zone, a charge would apply.

See Amazon Web Services Availability Zones for tools to describe instance location.

You get charged while the instance is running even if it is idle.

Charlie

It is just what is on that chart: charges are per hour + data transfer. Nothing about CPU usage, you pay for every hour it is running.

Richard

I think if you create an instance in a particular region data transfers within that region are less.

Yes, that’s a good use for startup package

The instance you terminate is gone for good, so don’t leave anything on it that you want.

Richard

Hi Dave

Thanks for your answers.

Before I started on this, I just wanted to know that I’d found the right solution and understood the concepts correctly… seems Wowza will do it. Great news :smiley:

I’m aware I’ve got alot of testing ahead to get this up and running. I’m familiar with remote admin of servers and PHP dev though so it should be ok. Just need to get to know the specifics of EC2.

Thanks for the tip on JWPlayer, looks perfect!

I guess I just give the public DNS address and port of an EC2 Wowza instance to JWPlayer. And after reading through some of the docs, I could do basic load balancing between instances by querying port 80 of each instance, and choosing the server with the lowest value returned.

Also from the docs it seems I can password protect the server, so that only people with the password can send data to the streaming server.

Ok some more questions…

  1. So I pay Wowza all the fees rather than Amazon, even though its all running on our AWS account. That sounds fine…

Do I pay a $5 per month for each instance?

Or is it just $5 for all of them? So if I had 5 L instances, it would be $5 per month plus the data+compute time I managed to rack up.

  1. The 2 camera streams will be uploading 120Kb/s max each from Flash Media Encoder

So 2 cameras, means we’ll be uploading 240Kb/s = 30KB/s… for 24 hours for 13 days equals 33.696GB * $0.12 = $4.04 of inbound data charge

Is my method of working that stuff out correct?

  1. Is there a method where we can be monitoring what charges we are building up over the week?

Obviously slightly delayed info, but it would give us a ballpark figure. Then I could gradually tweak bitrates and video sizes throughout the week.

Thanks for your patience!

Ben

Ok great stuff. Thanks for your quick reply.

Wowza looks exactly what I was looking for. I’ll start looking into this in the New Year

Thanks for all your help :wink:

Hi WowzaDave

Sorry to resurrect an old thread, but I’m coming up to the time where I’ll be starting to test this out.

This all sounds fine, but I’m trying to get a more accurate figure for the costs involved in running a video webcam/camcorder streaming.

So the per hour pricing mentioned here:

https://www.wowza.com/ec2.html

Do you get charged for when the instance is running but not doing anything?

Or is that only if the CPU level of the instance is over a certain average figure in an hour, then you get charged?

Thanks, B

Fair enough, thanks for the info :smiley:

Some further questions:

  1. What does the regional data transfer figure mean?

Is that an extra charge if an EU user transfers data from a US instance?

  1. With EC2 you can stop / start / restart instances. But when you restart an instance are all your settings preserved?

Or would you have to configure Wowza all over again?

I guess that’s where a start-up package comes in!

The reason I ask #2 is that for this particular event we’ll only have the webcams turned on during the day, so there’ll be no point in having the instance running overnight.

Thanks, B

Ah right ok. We won’t be using S3 for this particular project, we’ll be streaming straight to an EC2 instance

Thanks for all the info! :smiley:

Cheers, B

Hi there, my use-case is very similar to your. I was wandering if you have any interest in collaborating.