After much research and testing we have settled on two approaches for delivering video content from Amazon Web Services (AWS). Each approach uses a different delivery protocol.

By progressive download (HTTP) using CloudFront or S3

HTTP delivery sends the entire video file upon request meaning the video arrives with the same quality at which it was encoded. However, the user will receive it only as fast as their network connection will allow.

You can get around this to a certain extent with PHP-streaming or pseudo-streaming but this still relies on a traditional web server rather than a streaming server.

 

By steaming (RTMP) using Wowza Media Server for EC2

When a file is streamed via a media server such as Wowza Media Server a measured stream of data is delivered to users as the video plays. Priority is given to timely delivery over aesthetic quality ensuring that the data stream continues uninterrupted, even if it means reducing quality.

Excellent or poor performance can be achieved with either delivery protocol. And in most cases, the user cannot tell whether the video they’re watching is downloading or streaming.

 

Why set up both on AWS?

HTTP:

RTMP:

We would never stick out our neck out and say that one delivery protocol was better than the other.

But we will say that they each have their own pro’s and con’s and having the option to choose between the two was critical for us.

There is no doubt that HTTP is a doddle to set-up.

Wowza for EC2 is amazingly well supported via the Wowza forums but it is still a bit of a challenge.

So our advice would be if your looking for the best of both worlds definitely look into the approaches outlined above but if you’re looking for a quick and easy way to offload your video delivery (or any other heavy assets) stick to S3/CloudFront you won’t be disappointed.

François Roshdy

François is director of user experience at Border Crossing UX. He specialises in helping clients continuously improve the experiences they deliver.