NAME
   Video::Generator - Perl class for video generation.

SYNOPSIS
    use Video::Generator;
    my $obj = Video::Generator->new(%parameters);
    my $type = $obj->create($out_path);

METHODS
   "new(%parameters)"
            Constructor.

           *       "delay_generator"

                    Delay generator.
                    Default value is object below:
                      Video::Delay::Const->new(
                              'const' => 1000,
                      )

           *       "duration"

                    Video duration used for implicit 'video_pattern' parameter.
                    Possible suffixes are:
                    - ms for milisendons.
                    - s for seconds.
                    - min for minute.
                    - h for hour.
                    Default value is 10000 (10s).

           *       "ffmpeg_video_codec"

                    FFmpeg video codec.
                    Default value is undef, use default ffmpeg.

           *       "fps"

                    Frames per second.
                    Default value is 60.

           *       "height"

                    Height.
                    Default value is 1080.

           *       "image_generator"

                    Image generator.
                    Default value is object below:
                      Image::Random->new(
                              'height' => $self->{'height'},
                              'type' => $self->{'image_type'},
                              'width' => $self->{'width'},
                      )

           *       "image_type"

                    Image type used for implicit 'image_generator' parameter.
                    List of supported types: bmp, gif, jpeg, png, pnm, raw, sgi, tga, tiff.
                    Defult image type is 'bmp'.

           *       "temp_dir"

                    Temporary dir.
                    Default value is File::Temp::tempdir().

           *       "verbose"

                    Verbose mode.
                    Default value is 0.

           *       "video_pattern"

                    Video pattern generator.
                    Default value is object below:
                      Video::Pattern->new(
                              'delay_generator' => $self->{'delay_generator'},
                              'duration' => $self->{'duration'},
                              'fps' => $self->{'fps'},
                              'image_generator' => $self->{'image_generator'},
                      )

           *       "width"

                    Width.
                    Default value is 1920.

   "create($out_path)"
            Create video.
            Returns undef.

ERRORS
    new():
            From Class::Utils:
                    Unknown parameter '%s'.
            From Image::Random:
                    Image type '%s' doesn't supported.
            From Video::Pattern:
                    Parameter 'duration' must be numeric value or numeric value with time suffix.
                    Parameter 'fps' must be numeric value.

    create():
            Error with command '%s'.
                    STDERR, %s
                    ..

EXAMPLE1
    # Pragmas.
    use strict;
    use warnings;

    # Modules.
    use File::Path qw(rmtree);
    use File::Spec::Functions qw(catfile);
    use File::Temp qw(tempdir);
    use Video::Generator;

    # Temporary directory.
    my $temp_dir = tempdir();

    # Object.
    my $obj = Video::Generator->new;

    # Create video.
    my $video_file = catfile($temp_dir, 'foo.mpg');
    $obj->create($video_file);

    # Print out type.
    system "ffprobe -hide_banner $video_file";

    # Clean.
    rmtree $temp_dir;

    # Output:
    # Input #0, mpeg, from '/tmp/GoCCk50JSO/foo.mpg':
    #   Duration: 00:00:09.98, start: 0.516667, bitrate: 1626 kb/s
    #     Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p(tv), 1920x1080 [SAR 1:1 DAR 16:9], 104857 kb/s, 60 fps, 60 tbr, 90k tbn, 60 tbc

EXAMPLE2
    # Pragmas.
    use strict;
    use warnings;

    # Modules.
    use File::Path qw(rmtree);
    use File::Spec::Functions qw(catfile);
    use File::Temp qw(tempdir);
    use Video::Generator;

    # Temporary directory.
    my $temp_dir = tempdir();

    # Object.
    my $obj = Video::Generator->new(
            'verbose' => 1,
    );

    # Create video.
    my $video_file = catfile($temp_dir, 'foo.mpg');
    $obj->create($video_file);

    # Clean.
    rmtree $temp_dir;

    # Output:
    # Video pattern generator created images for video in temporary directory.
    # Created video file.
    # Removed temporary directory.

DEPENDENCIES
   Class::Utils, Error::Pure, FFmpeg::Command, File::Path,
   File::Spec::Functions, File::Temp, IO::CaptureOutput, Image::Random,
   Readonly, Video::Delay::Const, Video::Pattern.

SEE ALSO
   Image::Random
       Perl class for creating random image.

   Image::Select
       Selecting image from images directory.

   Image::Select::Array
       Selecting image from list with checking.

   Image::Select::Date
       Selecting image from images directory by date.

   Video::Delay
       Perl classes for delays between frames generation.

   Video::Pattern
       Video class for frame generation.

REPOSITORY
   <https://github.com/tupinek/Video-Generator>.

AUTHOR
   Michal Špaček <mailto:[email protected]>

   <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2014-2015 Michal Špaček
    BSD 2-Clause License

VERSION
   0.07