Paperclip thumbnail generation uses magic?

I have been using CarrierWave for file uploads on a site which needs to
accept a really wide range of different movie formats, stills, PDFs…
And I have been struggling with making thumbnails of certain formats.
After much yak-shaving with ffmpeg and imagemagick and Rmagick, I
finally decided to do a little spike app with nothing but Paperclip. I
set up the simplest thing that could possibly work:

has_attached_file :blob, :styles => { :thumb => [“320x320>”, :png],
:large => [“1500x1500>”, :png] }

And no matter what format (within reason) I pass to it, I get a nicely
formed PNG format thumbnail and large preview image. PSD, PDF, TIFF,
MOV, M4V – it Just Works. And I cannot figure out how it is doing this,
despite reading through the source code for quite a while.

The reason why I need to access the magic is that while I am getting a
nice thumbnail from any movie format I pass in, I am getting the very
first frame of the movie (usually black) rather than a few seconds into
the clip. In my CarrierWave converter, I had a custom offset time
defined for this. But I cannot see where Paperclip is defining what to
do with a video to generate a PNG image so I can alter this default.

There are tons of examples on SO and the Web in general, showing how to
create a custom video thumbnailer and transcoder, but I would like to
avoid rebuilding this wheel that Paperclip seems to have hewn out of
pure Elven magick.

Thanks in advance,

Walter

I haven’t seen the paperclip code but I think you can look at the
preprocessors used by default by paperclip.
You usually see logs when paperclip does some processing using rmagick
which may be a clue as to what
part of the lib you want to look at.

On Wed, Jun 12, 2013 at 11:15 PM, Walter Lee D.
[email protected]wrote:

And no matter what format (within reason) I pass to it, I get a nicely

You received this message because you are subscribed to the Google G.

Thanks, that’s good advice. The console told the tale. It appears as
though ImageMagick is delegating to ffmpeg, and the convert function
that Paperclip generates in their thumbnail operation tacks a [0] to the
end of the filename to get it to use the first frame. I need to do some
more digging, but it appears as though I can just put a different number
in there for movies. It seems as though all file types are getting the
[0] treatment, not just movies, so I don’t want to start looking for
frame 10 in a TIFF…

Walter

you may want to put this into something that loads when you app loads,
like initializers/paperclip.rb

Paperclip.options[:log] = true