
I’ve been in search of a decent low cost video streaming solution for a long time now. It doesn’t take long playing with Ustream and Livestream to realize that while the software running those systems is extremely user friendly and convenient, the ads they run are obnoxious and intrusive. The premium subscription for both of those services also totals over $10,000 a year, so I’m not their target market by a long shot. I blogged a bit about this when I was setting up DS106TV and we eventually settled on Justin.TV, forgoing the attractive offline rotation of Livestream because Justin was the only service that had just one single ad at the beginning of the stream and no interruptions thereafter.
Unfortunately Justin.TV is not perfect or even close. Unlike other services they offer no premium plan to remove the ads for a channel, opting instead to require individual users to pay $10/month to see no ads on Justin.TV channels. Their iOS app costs $5 but then had the audacity to show ads in streams there as well. And in general the service feels like it’s struggling to find a foothold in this market. Beneficial features like direct upload of recorded video to Youtube were pulled from all but channels except those designated as “Gaming”. Justin.TV works and it’s still the best user-friendly way to stream online for free. But I’ve finally found a way to stream live video with no ads at all for literally pennies and while it’s not easy to setup, it’s worth blogging about. Let’s dive in.
Earlier this week I sat in on a meeting with Andy Rush and an engineer from UMW’s IT group to talk about the current media server they have running and UMW’s presence on iTunes U. The current server is mainly a web host with storage and FTP access for faculty. Upload a video, get a link to that video, insert link in blog. Straight-forward but definitely not user-friendly. Getting content into iTunes U requires creation of feeds (which apparently can require third party tools as well) and in general the server was just not being used. Whether we double-down on iTunes U and improve the system for feeding into it or look towards building a more open web presence where UMW hosts their own videos and becomes its own syndicate for educational content being created here is another blog post entirely. Yet clearly this was a good opportunity to start looking at alternatives to complement a new media server in the process of being purchased.
Although I didn’t know much about it, I’ve heard a lot about Wowza which gets thrown around a lot when you talk about streaming or encoding videos on the fly. Once I started researching it a bit more I realized that this software is actually extremely powerful! Here is a short list of what it can do:
- Live Video Streaming using Flash
- Live Video Streaming to iOS devices via Quicktime
- Restreaming from an Icecast/Shoutcast Server
- Remote Recording of Streams
- Dynamic Streaming and Bandwidth Detection
- On-Demand Video Streams
The site has a ton more information and to be honest there are more acronyms and formats than even I can comprehend, but I knew it was powerful and I wanted to start playing with.
One of the nice features Wowza offers is the ability to run an instance of their software in the cloud using Amazon EC2. Basically you sign up for access to these Wowza instances which costs $5 a month and then you only pay $0.15/hour that the instance is in use. For a 24/7 production unit it probably wouldn’t be cost effective unless you were really concerned about not using your own bandwidth, but for a situation like ours where we only stream 5-6 hours per week at most, this was a chance to use enterprise-level software and end up paying just a few dollars a month! You can learn more about how they price things on Wowza’s EC2 page. Here’s a basic overview for how I got DTLT Today up and running using Wowza on EC2 and Wirecast to stream (although the free Adobe Flash Media Encoder will work as well).
First you have to subscribe to gain access to the Wowza instances on EC2 here. You’ll need to setup an Amazon account if you don’t already have one. From the outset you’re only billed a prorated amount for the $5/month charge for access to the Wowza instances. And I say instances because they have several different versions of the software on different architectures available to run. You can get a full list of them here. We’ve been running the latest version on a small 32-bit architecture (ami-5a649833) and had no issues so far.
Once you’ve gotten setup to access the Wowza instances login to the AWS Management Console and go to the EC2 tab. Choose to start an instance. It will allow you to choose what you’d like to run and you can search for the wowza instances or copy and paste the ami-XXXXXXXX number for the instance you want to run under the Community tab. Make sure you don’t inadvertently choose the wrong instance since the larger and high-cpu instances cost much more per hour to run (and you likely don’t need that kind of horsepower). For the instance details you can choose the defaults and give it any name. For the “Key Pair” generate one the first time you run it and from then on you can select that same key pair. For the security group create a new one and setup the ports following the Wowza EC2 Ports Guide. This is another one-time thing and you’ll be able to select that same security group in later instances. Click finish and you’re good to go.
After a few moments the instance will boot up and be running. At this point you have Wowza running online and you can stream to it. A good guide on how to do that using JWPlayer is located here. Basically you can grab the public dns of your stream and add “rtmp://” to the beginning of it and “/live” to the end of it and that’s the url you send a stream to. The Quick Start Guide to Wowza on EC2 is chock full of information and URLs for streaming using this service.
Here are a few things to keep in mind when going this route
- Make absolutely sure once you’re done streaming that you terminate the instance. Just because you’re not streaming doesn’t mean you’re not being charged. As long as the instance is running you’re being billed.
- If you are planning on streaming regularly to a location you’re going to want to add an Elastic IP address, which is basically a static IP that can be assigned to any instance that you start. After you start an instance go to your Elastic IP and associate it with that instance. That way your flash player and streaming software can all keep the same settings. There is a cost associated with this but it’s only $0.01/hr when the IP address is not in use (when it’s associated with an active instance it doesn’t cost anything).
- No settings, data, or videos are stored when an instance is terminated. Because of this if you need to configure a Wowza server to do a lot of things that are not setup by default, you would likely be better served by running it on your own server hardware. There are tricks to making data persist in an instance, but you’d be looking at setting up storage blocks to keep the instance active and that storage would cost you as well.
This is complex stuff and I didn’t go into a ton of detail here because honestly I’m not an expert at this. I’ve been playing with it for two days now and I’m happy enough that I was able to get it to work and now know that options like this exist. I’m excited about the possibility of UMW having their own Wowza server so that we could really test the limits of what this could do. Amazon is currently offering a free year of testing out EC2 instances for new Amazon AWS users and while Wowza is not eligible for the free tier, if you’re just wanting to see what it means to have an instance of a Linux server running WordPress “in the cloud” you could run one 24/7 for a year for free. It’s all the benefits of a virtual private server without maintenance and strong uptime. If you’re a tech-savvy user and you’re looking for a challenge why not check it out?
This is wicked – I will definitely be checking out Wowza on EC2 – I have a couple AMIs I have played with and found the ad-hoc costs and monthly costs to be pretty decent. Thanks for blogging this – very cool.
I’m really stoked by the possibilities it opens up. If we end up getting a copy of it running here on campus on a beefy server the fun will really begin. The Icecast restreaming is something I want to look into more for sure.
[...] few weeks ago when I started playing around with Wowza for streaming I started thinking about the value iTunes U offers for the University. We have an iTunes U server [...]
Tim, thanks for the article. Any idea how sites like http://www.twit.tv are able to stream Ad Free? Is there some other level of paid membership at Justin.tv that we are unware of or do they have some special arrangement?
I think Twit most definitely has a special arrangement with Justin.TV. I’d imagine they must have a policy in place where if you have enough money and followers watching daily they can work out a deal.
So, this Wowza server doesn’t add in advertisement into your live broadcasting, right? We’re trying to set live streaming for my brother’s wedding in a few months and that’s the main thing we’re looking for.
Correct, there are no ads at all.
[...] to Tim Owen’s Streaming for Pennies post that has been powering DTLT Today’s live stream, I now have an internet broadcast [...]
Hi Tim, thanks so much you have us up and running, quick question though how much do you find it is costing you to stream? we have an event coming up that we would like to stream it will run for 5hrs but we are not sure how many people will watch it. How many views do you get and how many do you stream?
On a month to month basis I probably spend about $15. It’s $5/month for the license to use Wowza on Amazon, I pay for a static IP address that ends up being about $7/month. And then streaming is about $0.15/hr. If you’re only planning on doing it once your costs would be even lower, probably less than $10. I don’t typically look at stats (Wowza doesn’t do this well) but I’ve seen at most around 45 people watching a stream at one time. Never had an event that pulled in more than that, but Amazon does have some larger instances which give the server more bandwidth and resources to handle larger sets of users.
Hi Tim,
Great guide thanks for this. You say in your guide:
“Make sure you don’t inadvertently choose the wrong instance since the larger and high-cpu instances cost much more per hour to run (and you likely don’t need that kind of horsepower)”
How are you able to tell which type of instance you are choosing? Is is simply just in Instances>Type in the management console?
Thanks again
Hi John, after you select which instance you want the next screen allows you to choose the size of the instance. Screenshot of that interface here: http://i.imgur.com/nZwfg.png
Thanks again. Went through the process yesterday and set it up using the webcast/video you did with Jeff Lebow as a guide. Just need to sort out the HTML5 player now.
Hi Tim,
Thanks for the valuable post.
Can we use AWS S3 with wowza for both download and stream a same media content?
Keep it up your good work!
We never tried this but I know it is possible using s3fuse (http://code.google.com/p/s3fuse/) to mount a folder that connects to s3. The problem is you have to configure that any time you fire up an instance which makes it difficult to do on a regular basis unless you have a script that runs when you turn the instance on or you decide to get a dedicated box and run Wowza from it.
Hello Tim,
Thanks for the prompt reply and the solution.
I need one more advice.
Could ypu please pass your email ID to danishka AT gmail DOT com.
So, I can send a mail with exact issue/requirement.
You can make a live video broadcast for free without ads, using open source software.
The only thing you need is a good internet conection. of course if you got your own server, or a free server (like amazon free tier for a year) you can use it too.
I allready test some options like apache+php+mysql server side app + client app + manager app, but sometimes this kind of apps are too much. And honestly don’t work as expected.
In contrast, there is a really good option out there called VLC (for free) that can be used for live streaming… just use FLV as output and then use some free flash player to play it on a webpage, you can even use your own pc as a web server using apache (for free on windows or unix) and that’s all.
Live streaming for free without ads, using your own PC.
Best regards
Well if anyone doesn’t want to go threw the work on building apps to work with a Wowza Media Server and still wants to broadcast LIVE and Record there broadcast I have a service site called http://www.OperationCloud.tv that has been done with a NO AD policy and you can STREAM 24/7 in HD FREE .. YES FREE. There is paid plans to enable recording and video editing features that start as low as $42.95 month which is also AD FREE TOO ! contact me directly if you even have any questions I am the owner/founder Miguel@operationcloud.tv – Thank you
[...] I get. The last time I really played around with them was a year and a half ago when I figured out how to setup a live broadcasting stream using EC2 that would only cost pennies per hour. A few days ago I started looking around again to see what [...]
Quick question can wowza be used to build something as big as twitch.tv? or is there some other program better to do that sort of huge project with?
The big thing with Wowza is that it's really just a backend piece of software for driving livestreams. They have an API but it doesn't often feel like there's a ton of development out there (outside of custom stuff) to build on top of Wowza. That is to say yes I'm sure Wowza could be used in part to build something like Twitch but it wouldn't be the only thing necessary. To give you an idea of the scale of it I'm pretty sure Wowza is what is running Justin.TV, or at least they were using it at one point. But it takes a lot of development chops to build something advanced like that on top of it. -Tim
The website you all should check out is http://www.enetlive.tv
You can pay a membership that isn’t high at all and have unlimited broadband and they upload everything into a VOD on your own channel and you can earn money on your subscribers and you control all advertising…
There is a lot more, but trust me it is worth checking out!!!
Which instance on amazon should i choose to reliably stream my channel to 800 concurrent users and how much will that cost
This thread (albeit a bit out of date) can help you understand how to calculate that. A lot depends on what quality you are streaming out. If you have 350Mbps bandwidth and you’re streaming a 500Kbps stream you can get about 700 users before maxing out. There’s also talk of load balancing and repeaters to use multiple instances but I’ve never done any of that. In terms of cost once you know what size you need you can see how much that costs from this page: http://www.wowza.com/pricing/ec2-streaming#embedded-license
Thanks Tim that proved really helpful…well i haven’t used amazon instances before and since my channel is a 24/7 broadcast, i just wants to confirm that do they offer unlimited bandwidth usage at 350 Mbps for standard large instance s? or i have to pay for that separately…
My understanding is bandwidth costs are built into the hourly cost of the instance (I’ve only ever been charged for instance time and the $5/month Wowza Devpay license through Amazon). But I’m not sure if a 24/7 broadcast will benefit from cost savings with Amazon over running your own server with a Wowza license. I would price it out and see what it comes out to.
Thanks i will wait for your reply
Well aws charges for the out going data usage from their cloud and if i am streaming videos at a rate 500 kbps 24/7 i will deliver 1 tb data to a single user and if i have 50 users watching videos all the time.. i wil be streaming out 50 TBs a month right and that will cost $5404.77 according to aws calculator http://calculator.s3.amazonaws.com/calc5.html and that’s not worthy for me … am i right or taking something wrong
If I were you I would post the scenario in the Wowza forums and get some advice there. They’d know better what the pricing would be and the ideal setup. I’ve only used this setup for one-off broadcasts, not for building 24/7 streaming systems.
Yes, thanks for the advice and replies…have a nice day
Hi Tim
next May 18 i will make my firts stream event usin wowza an amazon web services, i follow you ideo tutorial to prove an instance streaming in my computer an it works fine.
I wanna know about what I have to do to get a better resolution in the streaming.
I have to write , I,m in Bogota colombia , and i will connect to ami wowza server in California