Vidibus::Fileinfo

Returns information like the width, height and bits about an image or video file.

This gem is part of Vidibus, an open source toolset for building distributed (video) applications.

Installation

Add the dependency to the Gemfile of your application:

gem "vidibus-fileinfo"

Then call bundle install on your console.

System requirements

In order to perform the file inspection, ImageMagick and FFmpeg executables are required.

Unless ruby already knows about those tools, you'll have to define the path somewhere. In a Rails environment, a good place would be your development.rb and production.rb.

Example for development environment on OSX:

# Set path to ImageMagick and FFmpeg executables
ENV["PATH"] = "#{ENV["PATH"]}:/opt/local/bin"

Example for production environment on Debian:

# Set path to ImageMagick and FFmpeg executables
ENV["PATH"] = "#{ENV["PATH"]}:/usr/bin/"

Usage

Obtaining information from a file is easy:

Fileinfo("path/to/myfile.png")
# => {:width => 300, height => 200, ... }

Image files

For images, a hash with following data will be returned:

:width             # width of image
:height            # height of image
:size              # file size in bytes
:bit               # depth in bit
:content_type      # content type of image, e.g. "image/jpeg"
:orientation       # visual position e.g. 6 (right top). See "Exif orientation" for more
:quality           # quality of image

This gem currently support these image formats:

jpg, jpeg, png, gif

Video files

For videos, a different hash will be returned:

:width             # width of video (without anamorphosis), e.g. 1920
:height            # height of video, e.g. 1080
:aspect_ratio      # aspect ratio of video on display (DAR), e.g. 1.777778
:size              # file size in bytes, eg. 20883991
:duration          # duration of video in seconds, e.g. 44.82
:content_type      # content type of video, e.g. "video/mp4"
:frame_rate        # frames per second, e.g. 29.97
:bit_rate          # overall bit rate (video + audio) in bit, e.g. 600000
:video_codec       # codec of video stream, e.g. "h264 (Main)"
:audio_codec       # codec of audio stream, e.g. "aac"
:audio_sample_rate # sample rate of audio stream, e.g. 48000

These video formats are currently supported:

3g2, 3gp, asf, avi, dv, f4p, f4v, flv, ivf, m21, mj2, mjpg, mkv, mov, mp4,
mpeg, mpg, mts, mxf, ogg, ogv, rm, ts, webm, wmv

Audio files

For audio files the dataset looks as follows:

:size         # file size in bytes, eg. 20883991
:duration     # duration of video in seconds, e.g. 44.82
:content_type # content type of video, e.g. "audio/mpeg"
:bit_rate     # bit rate in bit, e.g. 600000
:codec        # codec of audio stream, e.g. "aac"
:sample_rate  # sample rate of audio stream, e.g. 48000

These audio formats are currently supported:

mp3

Copyright (c) 2011-2013 Andre Pankratz. See LICENSE for details.