video-generator
This is tested in macOS Mojave 10.14.6 (18G87)
Installation
Please make sure you install FFMPEG library in your machine before using this gem.
    gem install erika   
Requirements
FFMPEG
A complete, cross-platform solution to record, convert and stream audio and video.
MacOSx
brew install ffmpegUbuntu
apt-get install ffmpegUsage
To compile images in ~/pictures/birthday, you need to make sure files are named in proper order.
I recommend you to prefix the files with number like
- 0 My first birthday.jpg
- 1 My second birthday.jpg
- 2 My second birthday.jpg
- 3 My third birthday.jpg
single command to compile
cd ~/pictures
erika g -s birthday -o mybirthday.mp4 
# This will generate video called `mybirthday.mp4`Options
 erika help g
Usage:
  erika g
Options:
  -o, [--output=OUTPUT]                            # Output path; where to generate output movie
  -s, [--source=SOURCE]                            # Input path; folder path where the images are located
  -a, [--audio=AUDIO]                              # Audio path; the path to bg audio
  -t, [--transition-duration=TRANSITION_DURATION]  # Transition animation duration between two images
  -S, [--slide-duration=SLIDE_DURATION]            # Slide duration between two images
Generate movie
Example:-
 erika g -s happy -S=5 -t=4 -o=opt/mymovie.mp4How Slide Animation is implemented
Creating intermediate mpeg's for each image and then concatenate them
all into a video.
For example, say you have 5 images; you would run this for each one of the
images to create the intermediate mpeg's with a fade in at the beginning and a fade out at the end.
ffmpeg -y -loop 1 -i <your-image> -vf "fade=t=in:st=0:d=0.5,fade=t=out:st=4.5:d=0.5" -c:v mpeg2video -t 5 -q:v 1 image-1.mpegwhere t is the duration, or time, of each image. Once you have all of these mpeg's, you use
ffmpeg's concat command to combine them all into an mp4.
ffmpeg -y -i image-1.mpeg -i image-2.mpeg -i image-3.mpeg -i image-4.mpeg -i image-5.mpeg -filter_complex '[0:v][1:v][2:v][3:v][4:v] concat=n=5:v=1 [v]' -map '[v]' -c:v libx264 -s 1280x720 -aspect 16:9 -q:v 1 -pix_fmt yuv420p output.mp4Components Used
- 
get Image dimension
 - 
IMAGE SCALING
 - 
FFMPEG filters
 - 
Resizing and padding image
 - 
Capturing STD Streams to prevent logs being cluttered
 - 
Animation in Slide Transition
 - 
Image to Video Guide FFMPEG
 - 
Repeat Audio and generate a new audio file
 - 
Add Subtitles to the video
https://superuser.com/questions/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player/1136305#1136305 https://trac.ffmpeg.org/wiki/Concatenate