The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
######################################################################
# Test suite for FrameGrab
# by Mike Schilli <cpan@perlmeister.com>
######################################################################
use warnings;
use strict;

use Test::More;
use Sysadm::Install qw(slurp);
use File::Temp qw(tempfile);
use Log::Log4perl qw(:easy);

my $nof_tests = 6;
plan tests => $nof_tests;

my $canned = "canned";
$canned = "t/canned" unless -d $canned;
my $video = "$canned/plane.avi";

use Video::FrameGrab;

my($tmp_fh, $tmp_file) = tempfile(UNLINK => 1);

SKIP: {
    my $grabber;
    
    eval { $grabber = Video::FrameGrab->new( video => $video ); };

    if($@ =~ /Can't find mplayer/) {
        skip "Mplayer not installed -- skipping all tests", $nof_tests;
    } elsif( $@ ) {
        die $@;
    }

    my $rc = $grabber->snap("00:00:05");
    ok($rc, "frame at 5 secs");

    $rc = $grabber->snap("00:00:08");
    ok($rc, "frame at 8 secs");

    # Test video
    my $meta = $grabber->meta_data( $video );
    is($meta->{"length"}, "10.01", "meta data length");
    is($meta->{video_bitrate}, "144880", "meta data bitrate");

    my @stamps = $grabber->equidistant_snap_times(2);

    is($stamps[0], "00:00:03", "first stamp");
    is($stamps[1], "00:00:06", "second stamp");
};