Amazon s3/Cloudfront Ruby on rails video streaming - ruby-on-rails

I am building a ruby on rails website that will store and stream videos. I am using carrierwave and amazon s3 to upload and store the videos. If I am not mistaken, I can stream the files directly from s3 to my website.
So can anyone explain why does it seem that everyone uses cloudfront along with s3. What are the benifits?
What will be the average cost of such a storage/serving solution.
I will be streaming the videos via html5 so i will not be looking at encoding solutions

The main advantage to CloudFront is that it's a CDN. So the content is positioned closer to your customers, rather than just in Amazon's main data stores. You can use CloudFront with or without S3. It has a concept of an origin, which is basically the master server for your content. That master server can be S3 or a non-Amazon server.
For pricing, you should look at the CloudFront pricing details, and optionally the pricing for S3 (if you use that as origin).
You can use the calculator to estimate the actual cost. Let us know if you want help with that.

Related

Using CloudFront to serve private content while using signed s3 urls

Currently, I am serving private S3 objects using signed urls across the globe and I am looking to accelerate certain S3 reads with CloudFront to leverage the CF<>S3 connectivity and the caching.
Unfortunately, S3 Transfer acceleration is not an option for me because, my bucket name is not DNS complaint(long-lived bucket with '.'s in the name)
I plan on using both S3 signed urls and CF. Only a set of users will be using CF considering the cost aspects.
Is there anyway that I can use CloudFront to serve private content while using S3 signed urls?
Any help on this is much appreciated.
Yes, of course. Here is a great article which you may find helpful.

When I should upload files directly to amazon S3

I've seen many posts talking about direct uploading to amazon S3 but none of them tell when we should really do that !
Is "direct upload to S3" always better than uploading to S3 via Rails app using gems like paperclip or carrierwave... ?
And when I should use direct upload vs normal upload to S3 ?
Uploading directly to Amazon S3 has the benefit of reducing load on your back-end web servers (for both CPU and bandwidth).
It is great for mobile apps that can call the Amazon S3 API directly, but is also applicable to web pages that can upload via a POST to Amazon S3.

Heroku - does it support HTTP Live Streaming?

I have a Rails 4 application that is deployed by Heroku servers. To serve videos (stored on Amazon S3 servers), I've decided to implement HTTP Live Streaming. While any web server can be configured for HTTP Live Streaming, does anybody know if Heroku servers have been set up to support Apple's adaptive bitrate streaming solution?
For more info, see "Configuring a web server" at the following -https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/DeployingHTTPLiveStreaming/DeployingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH2-SW3
Thanks!
Here's a good SO answer that describes how HLS works. You'll notice that there's nothing special about the files involved; just a playlist of video segments at different bitrates and the client decides which segment at which bitrate to load. These video files and associated playlist file can be stored and accessed directly from S3, or any other basic web server for that matter.
You do have to encode the different streams, but this can be done locally, on your server, or through some other service like Amazon Elastic transcoder, and it only has to be done once per video file.
As it turns out, Heroku servers do allow for HTTP Live Streaming.

Need advice for image hosting websites

I'm developing my personal photography portfolio using Ruby on rails. I'm not at all saving those images in my assets/images folder as there are many high resolution images which will cost increase in size of the site folder. So i thought to upload those pics on some image hosting websites so that ill only give a URL of that pic which will dramatically cost in decreasing the size of the site folder. Ive three questions regarding my portfolio:
1. Is this the right way to do for portfolio websites?
2. What are the best image hosting websites for such need?
3. On what basis ill use the database for my portfolio?
Thanks.
You should check out some CDN (Content Delivery Network) service like
Amazon S3 + Amazon CloudFront
Rackspace Cloud Files
Cloudinary
Ruby has many gems for managing cloud services like these.
For example:
fog gem (actively developed by guys at Heroku and Engine Yard)
cloudinary gem
carrierwave gem (handles automatic uploading to CDN and database storage)
carrierwave + cloudinary (easy tutorial here)
You could also use Paperclip which can link to AWS as well to store all the images and manage the storage logic as well.
https://github.com/thoughtbot/paperclip

Amazon Cloud Media Server Streaming Help

Can someone PLEASE help me with setting up Adobe Media Server Streaming on Amazon Cloud?
I am reading whole day about it, about how to set it up on "regular" machines, but I can't find anywhere how to configure it on Amazon Cloud... After whole day reading I can say that I am still at start, don't know anything, and totally lost...
Can someone just point me in right direction? I don't know anything about Cloud servers, and working with this platforms...
So can anyone just point me where to start?
I need Adobe Media Server Live Streaming for HTML5 streams... I know HTML5, know how to make video element and everything, but I don't know how to start server...
Thankful for any help!
If you're using HTML5, you will not be able to use the RTMP streaming type in cloudfront. Don't worry about using the Adobe Media, or anything like that. Just look at hosting the files in S3 first, get the files loaded to that and pull them down in your HTML5 tag. Then, if you want cloudfront, you can easily add that and use that moving forward.
If you end up using a flash client to play the video, like the JW player, you could then setup a streaming cloudfront instance and utilize the RTMP streaming.
If you need to only stream existing content, AWS CloudFront runs Adobe Media Servers for files stored in S3 at no additional cost. The CloudFront term for using their Adobe Media Servers is "Streaming Distributions".
The Getting Started with CloudFront guide outlines setting up up streaming distributions. The Where Do I Go From Here page has links to several how-to articles.

Resources