Skip to content

michal-josef-spacek/Video-Generator

Repository files navigation

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"
     my $obj = Video::Generator->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_pixel_format"

             FFmpeg pixel format.
             Default value is undef, use default ffmpeg.

    *       "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.

    Returns instance of object.

  "create"
     my $type = $obj->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
     use strict;
     use warnings;

     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
     use strict;
     use warnings;

     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, 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/michal-josef-spacek/Video-Generator>.

AUTHOR
    Michal Josef Špaček <mailto:skim@cpan.org>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2014-2023 Michal Josef Špaček

    BSD 2-Clause License

VERSION
    0.11

About

Perl class for video generation.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages