This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
panda /
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Thu Oct 02 07:00:44 -0700 2008 | |
| |
LICENSE | Tue Sep 16 13:55:48 -0700 2008 | |
| |
README | Mon Aug 04 02:59:11 -0700 2008 | |
| |
README_EC2 | Tue Sep 23 07:52:02 -0700 2008 | |
| |
Rakefile | Wed Jun 11 15:06:21 -0700 2008 | |
| |
app/ | Fri Oct 03 08:08:41 -0700 2008 | |
| |
config/ | Fri Oct 03 03:45:45 -0700 2008 | |
| |
lib/ | Fri Oct 03 08:08:41 -0700 2008 | |
| |
log/ | Wed Sep 24 05:19:19 -0700 2008 | |
| |
panda.god | Tue Sep 30 08:04:27 -0700 2008 | |
| |
panda_nginx.conf.example | Tue Sep 23 07:52:02 -0700 2008 | |
| |
public/ | Fri Sep 26 03:38:49 -0700 2008 | |
| |
schema/ | Thu Jun 05 13:41:11 -0700 2008 | |
| |
script/ | Thu Jun 05 13:41:11 -0700 2008 | |
| |
spec/ | Thu Oct 02 09:31:23 -0700 2008 |
README
Panda is a Merb app which runs on a special EC2 instance to encode videos for you. Uploaded videos are stored on S3 with a small amount of info kept in SimpleDB. The REST API makes it easy to integrate user video uploading into your web application. How does Panda work? ==================== 1. Video is uploaded to panda 2. Panda checks the video's metadata, uploads the raw file to S3 and adds it to the encoding queue 3. The encoder application picks the encoding job off the queue when it's free and encodes the video to all possible formats 4. Panda sends a callback to your web application notifying you the video has been encoded 5. You use the S3 url of the encoding you want to show to your users Installation and setup ====================== Gems ---- Merb 0.9.2 S3 (http://amazon.rubyforge.org/) SimpleDB (http://nytimes.rubyforge.org/amazon_sdb/) gem install merb merb_helpers activesupport RubyInline amazon_sdb sqs Other deps ---------- # libjpeg http://www.ijg.org/ http://www.libgd.org/FAQ#gd_keeps_saying_it_can.27t_find_png_or_jpeg_support._I_did_install_libpng_and_libjpeg._What_am_ I_missing.3F # libgd http://www.libgd.org/Main_Page RVideo ------ Build gem from svn://rubyforge.org/var/svn/rvideo/trunk with `rake install_gem`. Then `sudo cp lib/rvideo/tools/*.rb /Library/Ruby/Gems/1.8/gems/rvideo-0.9.4/lib/rvideo/tools/` on OS X. FFMPEG ----- Available in all good package repositories including Darwin Ports. If you're developing on Mac OS X, you can grab ffmpeg out of the ffmpegX application instead of compiling it: http://www.macosxhints.com/article.php?story=20061220082125312 Configuration ============= Encoding profiles ----------------- Profile.create!(:title => "MP4 SD", :container => "mp4", :video_codec => "mpeg4", :video_bitrate => 300, :audio_codec => "aac", :audio_bitrate => 48, :audio_sample_rate => 48000, :width => 320, :height => 240, :fps => 24, :position => 2, :player => nil) Profile.create!(:title => "Flash video SD", :container => "flv", :video_bitrate => 300, :audio_bitrate => 48, :width => 320, :height => 240, :fps => 24, :position => 0, :player => "flash") Profile.create!(:title => "Flash video HI", :container => "flv", :video_bitrate => 400, :audio_bitrate => 48, :width => 480, :height => 360, :fps => 24, :position => 1, :player => "flash") Profile.create!(:title => "Flash h264 SD", :container => "mp4", :video_bitrate => 300, :audio_codec => "aac", :audio_bitrate => 48, :width => 320, :height => 240, :fps => 24, :position => 2, :player => "flash") Profile.create!(:title => "Flash h264 HI", :container => "mp4", :video_bitrate => 400, :audio_bitrate => 48, :audio_coded => "aac", :width => 480, :height => 360, :fps => 24, :position => 3, :player => "flash") Profile.create!(:title => "Flash h264 480p", :container => "mp4", :video_bitrate => 600, :audio_bitrate => 48, :audio_coded => "aac", :width => 852, :height => 480, :fps => 24, :position => 4, :player => "flash") Further information =================== Investigating encoding errors ----------------------------- When an encoding fails the status of the video is set to 'error' and the output of ffmpeg is saved on S3 with the filename video_token.error SimpleDB schemas ================ Videos ------ filename # 976a4b00-16cc-012b-7316-001ec2b5c0e1.flv original_filename # sneezing_panda.flv parent status # original, queued, processing, done, error duration container width height video_codec video_bitrate fps audio_codec audio_sample_rate profile # id of encoding profile used profile_title updated_at created_at Encoding profiles ----------------- title container width height video_codec video_bitrate fps audio_codec audio_bitrate audio_sample_rate updated_at created_at







