Movie::Info - get meta data from various format movie files


Movie-Info documentation Contained in the Movie-Info distribution.

Index


Code Index:

NAME

Top

Movie::Info - get meta data from various format movie files

SYNOPSIS

Top

	my $mi = Movie::Info->new || die "Couldn't find an mplayer to use\n";

	foreach my $file (@ARGV) {
		my %info = $mi->info($file) || warn "Couldn't read info from $file\n" && next;
		print "$file (WxH) - $info{width}x$info{height}\n"; 

	}

DESCRIPTION

Top

Movie::Info is a thin layer around MPlayer's --identify command line flag. As such it can only give you as much information as Mplayer is able to give you which is down to the quality and number of codecs you have installed.

MPlayer is available from http://www.mplayerhq.hu/

This module is largely based on the midentify script shipped with MPlayer.

METHODS

Top

new [path to mplayer]

Returns a new Movie::Info instance or undef if it can't find an mplayer binary.

To find a binary it looks in three places - firstly if you've passed in a path to look at it checks there, secondly at the environment variable $MOVIE_INFO_MPLAYER_PATH and then finally it searches your $PATH like the standard which command in Unix.

info <filename>

Returns a hash representing all the meta data we can garner about file.

Returns undef if it can't read the file.

AUTHOR

Top

Simon Wistow <simon@thegestalt.org>

COPYRIGHT

Top


Movie-Info documentation Contained in the Movie-Info distribution.
package Movie::Info;

use strict;
use File::Which qw(where);

our $VERSION = "0.2";



sub new {
	my $class   = shift;
	my $mplayer;

	my @where = where('mplayer');
	for my $cand ( ( shift, $ENV{MOVIE_INFO_MPLAYER_PATH}, @where ) ) {
		next unless defined $cand && -x $cand;
		$mplayer=$cand;
		last;
	}

	return undef unless defined $mplayer;


	BLESS:
	return bless { _mplayer_binary => $mplayer }, $class;
}


sub info {
	my $self = shift;
	my $file = shift || return undef;
	my %info;

	my $mplayer = $self->{_mplayer_binary};

	open(MPLAYER, "$mplayer -vo null -ao null -frames 0 -identify \"$file\" 2>/dev/null|") || die "Couldn't read from $mplayer: $!\n";
	while (<MPLAYER>) {
		next unless s/^ID_//;
		s/^VIDEO_//;
		chomp;
        s/(^\s*|\s*$)//g;
		s/([`\\!$"])/\\$1/g;
		my ($key, $value) = split /=/, $_, 2;
		$info{lc($key)} = $value;
			
	}
	#$info{filename} = $file;

	close MPLAYER;


	return %info;
}


1;