Project

erika

0.0
Low commit activity in last 3 years
No release in over a year
Generate Slideshow video from images using single command with animationIts simple to use and highly configurable.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.0
~> 13.0
~> 3.0

Runtime

~> 0.20.0
 Project Readme

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 ffmpeg

Ubuntu

apt-get install ffmpeg

Usage

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.mp4

How 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.mpeg

where 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.mp4

Components Used