package Info::Video; use strict; use warnings; my %value_types = ( mpginfo => '/usr/bin/mpgtx -i', ffmpeg => '/usr/bin/ffmpeg', ); sub new { my $class = shift; my $type = shift || 'mpginfo'; die "invalid type:$type\n" unless $valid_type{$type}; my $self = { type => $type, duration => '00:00:00.0', bitrate => 0, vcodec => '', vformat => '', framerate => '0.00', acodec => '', samplerate => 0, stereo => 0, audiorate => 0, }; return bless $self, $class; } sub video_info { my $self = shift; my $file = shift; # note: use $valid_types{ $self->{type} } for executable if ($self->{type} eq 'mpginfo') { # handle mpginfo } elsif ($self->{type} eq 'ffmpg') { # handle ffmpg } return $self; } 1;