[Gllug] Command line tool to find video dimensions?
salsaman at xs4all.nl
salsaman at xs4all.nl
Fri Jun 1 21:20:36 UTC 2007
On Thu, May 31, 2007 23:13, Nix wrote:
> On 31 May 2007, salsaman at xs4all.nl spake thusly:
>> In perl:
>>
>> #!/usr/bin/perl
>>
>> $file=$ARGV[0];
>>
>> # $file might be a stream, so we need to cache a bit
>> system("mplayer -identify -vo null -ao null -frames 0 -cache 32
>> \"$file\">tmpfile 2>/dev/null </dev/null");
>>
>> $hsize=`grep ID_VIDEO_WIDTH tmpfile 2>/dev/null`;
>> $hsize=(split("=",(split("\n",$hsize))[0]))[1];
>> chomp($hsize);
>>
>> $vsize=`grep ID_VIDEO_HEIGHT tmpfile 2>/dev/null`;
>> $vsize=(split("=",(split("\n",$vsize))[0]))[1];
>> chomp($vsize);
>>
>> unlink "tmpfile";
>>
>> print "Video size is $hsize x $vsize\n";
>
> *icccck*
>
> Perl does support pipes you know, and grep, and stuff, natively; no need
> for temporary files, let alone ones with insecure names possibly
> conflicting with existing files in the directory. Here's a three-minute
> hack (a proper implementation would use Pod::Usage at least and have
> proper docs; IPC::Run might be nice to use here as well):
>
> #!/usr/bin/perl -w
>
> use strict;
>
> die "Syntax: vidgeom filename\n" if $#ARGV != 0;
>
> die "$ARGV[0] not found" unless -f $ARGV[0];
>
> open MPLAYER, 'mplayer -identify -vo null -ao null -frames 0 -cache 32 ' .
> $ARGV[0] . '|' or die "Can't run mplayer: $!\n";
>
> my @output = <MPLAYER>;
>
> close MPLAYER;
>
> my $width_line = (grep /^ID_VIDEO_WIDTH/, at output)[0];
> my $height_line = (grep /^ID_VIDEO_HEIGHT/, at output)[0];
>
> print $width_line;
> print $height_line;
>
> chomp $width_line;
> chomp $height_line;
>
> die "Can't determine height and width\n"
> if !defined ($width_line) or !defined ($height_line);
>
> print 'Video size is ' . (split /=/, $width_line)[1] .
> 'x' . (split /=/, $height_line)[1] . "\n";
>
>
> --
> `On a scale of one to ten of usefulness, BBC BASIC was several points
> ahead
> of the competition, scoring a relatively respectable zero.' --- Peter
> Corlett
> --
> Gllug mailing list - Gllug at gllug.org.uk
> http://lists.gllug.org.uk/mailman/listinfo/gllug
>
>
Thanks for the tips ! Unfortunately my knowledge of perl has been gathered
mostly from online tutorials.
It's nice to know pipes are supported natively !
Gabriel.
http://lives.sf.net
--
Gllug mailing list - Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug
More information about the GLLUG
mailing list