Cloudfront-Private
Streaming all media private contents from amazon cloudfront
Installation
Add this line to your application's Gemfile:
gem 'cloudfront-private'
And then execute:
$ bundle
Or install it yourself as:
$ gem install cloudfront-private
Getting started
Generate initializer cloudfront-private
$ rails generate cloudfront:install
this should generated a file called cloudfront-private.rb in config/initializers
checkout this file to add amazon cloudfront credentials
Cloudfront::Private.configure do |config|
config.key_pair_id = 'your-key-pair-id'
config.pem_file = 'your-private.pem'
end
Edit above file with your amazon cloudfront private key pair id and pem file name
The private pem file should placed in 'certs' directory under Rails root
Access private content in your view
<% filename = "folder-name/filename.mp4 %>
<% file = Cloudfront::Private.get_url(request,filename) %>
<div id='media_player'></div>
Here, folder-name is hierarchy in your amazon bucket
Write javascript file to stream your private in jwplayer with jquery
function private_streaming(){
var flashvars = {
file: media,
provider:'rtmp',
streamer: 'rtmp://xxxxx.cloudfront.net/cfx/st'
};
var params = {
allowfullscreen: 'false',
allowscriptaccess:'always'
};
var attributes ={
id: 'jwplayer',
name: 'jwplayer'
}
swfobject.embedSWF('/jwplayer/player.swf','media_player','300','24','9.0.115','false',
flashvars, params, attributes);
}
$(document).ready(private_streaming);
Udate 'xxxxx.cloudfront.net' with your cloudfront distribution url
Restart your server to get update cloudfront configuration
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request