views:

476

answers:

2

I've been using S3 to store and serve FLV and MP4 videos. It works great, but the content is progressively downloaded. I was wondering if it is possible to get so-called "pseudo streaming" to work with S3.

Pseudo streaming allows viewers to seek ahead in a video before the full video has downloaded as well as send only the bits necessary to the Flash player.

I'm aware of Lighttp's pseudo streaming plugin, and I know I can use keyframed FLV files with an XMOOV script - but I'd like to setup this up with S3, as opposed to running my own server.

Any help is appreciated.

A: 

I recently used Wowza on an EC2 instance, it's super easy to setup and works great for providing real streaming ...

It seems like pseudo-streaming is not straight forward on S3 : (https://developer.amazonwebservices.com/connect/message.jspa?messageID=77737).

Theo.T
+3  A: 

No.

No, you can't do pseudo-streaming with S3. This is because of a couple of reasons:

  • S3 does not allow you to managed the bit rate of the download in any way
  • S3 does not allow you to place any logic in front of the file. This means:
    • no seeking into the middle of the file
    • no MOOV atom magic--if it is not at the front of the file, then the entire file will be downloaded before playback.

What you can do is this (and I have done something similar myself for a project):

  • Run an EC2 instance with lightty & mod_h264_streaming for seeking requests. You may even want to host your application/site on EC2 in this case.
  • have a copy of the file local to your instance
  • have a copy of the file on S3 for delivery from byte 0 (as I'd guess the majority of your requests would be.
  • Move the MOOV atom on file upload. This is not so difficult to do programatically.

EC2 bandwidth charges are the same as S3, but the total EC2 instance bandwidth is limited (100-250mpbs?), while S3 is effectively unlimited.

Stu Thompson