Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

paperclip-ffmpeg

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

paperclip-ffmpeg

  • 1.2.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Paperclip FFMPEG

Build Status

Adding video handling to Paperclip via ffmpeg. This gem has been tested under Linux and Mac OS X, YMMV under Windows.

Requirements

FFMPEG or AVCONV must be installed and Paperclip must have access to it. To ensure that it does, on your command line, run which ffmpeg. This will give you the path where ffmpeg is installed. For example, it might return /usr/local/bin/ffmpeg.

Then, in your environment config file, let Paperclip know to look there by adding that directory to its path.

In development mode, you might add this line to config/environments/development.rb):

Paperclip.options[:command_path] = "/usr/local/bin/"

Installation

Include the gem in your Gemfile:

gem "paperclip-ffmpeg"

Quick Start

In your model:

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => {
    :medium => { :geometry => "640x480", :format => 'flv' },
    :thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10 }
  }, :processors => [:ffmpeg]
end

This will produce:

  1. A transcoded :medium FLV file with the requested dimensions if they will match the aspect ratio of the original file, otherwise, width will be maintained and height will be recalculated to keep the original aspect ration.
  2. A screenshot :thumb with the requested dimensions regardless of the aspect ratio.

You may optionally add <attachment>_meta to your model and paperclip-ffmpeg will add information about the processed video.

You may optionally add auto_rotate: true to automatically straighten videos recoreded in a non-landscape mode.

Streaming Video

When ffmpeg produces mp4 files, it places the moov atom at the end which makes it unstreamable. To handle this, paperclip-ffmpeg includes a processor to run qtfaststart after producing the video file.

In your model:

class Lesson < ActiveRecord::Base
  has_attached_file :video, :styles => {
    :mobile => {:geometry => "400x300", :format => 'mp4', :streaming => true}
  }, :processors => [:ffmpeg, :qtfaststart]
end

See danielgtaylor/qtfaststart for instructions on how to setup qtfaststart.

FFmpeg Options

ffmpeg accepts a variety of options for video and audio like (-ac, -vn). To handle this, paperclip-ffmpeg accepts any options and passes them directly to the ffmpeg command via convert_options hash which includes the input and output options

class Lesson < ActiveRecord::Base
	has_attached_file :media, :styles => {
    :medium => { :geometry => "640x480", :format => 'flv', :convert_options => {:output => {:ar => 44100}} },
    :large => { :geometry => "1024x576", :format => 'flv', :convert_options => {:output => {:ar => 44100}} },
  }, :processors => [:ffmpeg]
end

Contribution

Kudos goes to all contributors for their amazing work.

If you'd like to contribute a feature or bugfix: Thanks! To make sure your fix/feature has a high chance of being included, please read the following guidelines:

  1. Post a new GitHub Issue[http://github.com/owahab/paperclip-ffmpeg/issues].
  2. Make sure there are tests! We will not accept any patch that is not tested. It's a rare time when explicit tests aren't needed.

License

Licensed under MIT license.

FAQs

Package last updated on 19 Jun 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc