Documentation

Last updated: May 5, 2019

Description

Online service for creating video slide shows and presentations. The user can upload his photos, sort, adjust animation, overlay text and get the finished video. The motion of the animation can be selected automatically, but it is possible to adjust the position of the camera movement. The administrator can configure the maximum number of simultaneous processing - the queue. For commercial gains, the owner can insert advertising banners.

Author: https://codecanyon.net/user/andycoder

Features

  • Upload multiple photos at once. Automatically detect photo orientation.
  • Sort photos. Disable unnecessary photos.
  • Overlay text with animation on selected photos.
  • Selection of music from the library, the ability to upload an audio file for background playback.
  • Editing camera movement (creating points for positions "from" and "to").
  • Video resolution selection - HD or FullHD.
  • Watermark overlay (application settings).
  • Displaying percent of the video creation process. Show queue number.
  • Admin interface where he can see the list of active projects - NEW.
  • Ability to translate the interface into different languages.
  • All projects and files are deleted after a certain time.
  • Sending an email to the administrator after creating each project.
  • Nice and easy to use interface.

System requirements

  • Linux server (not tested on Windows)
  • SSH access to the server.
  • PHP 7.1+
    Enabled PHP functions: exec, shell_exec
    PHP extensions: mysql, mysqli, mbstring, simplexml, libxml, json, gd
  • MySQL 5.7+
  • Melt must be installed on your server:
    https://github.com/mltframework/mlt
  • At least 1 GB of RAM

Installation

Install Melt

Install Melt on Ubuntu:

sudo apt install melt

You need to run this code in the terminal of your server. To access the terminal, connect to the server via SSH.

Building Melt on Windows:

https://www.mltframework.org/docs/windowsbuild/

Web server setup

Configuration example for Nginx server:

server {
    listen 80;

    server_name your-domain.com;
    root /var/www/your-domain.com/public;

    client_max_body_size 2000m;

    location / {
        try_files $uri /index.php$is_args$args;
    }
    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    location ~ \.php$ {
        return 404;
    }

    location = /favicon.ico {
	    log_not_found off;
	    access_log off;
    }

    location = /robots.txt {
	    allow all;
	    log_not_found off;
	    access_log off;
    }

    location ~ /\. {
	    deny all;
    }

    error_log /var/log/nginx/your-domain.com_error.log;
    access_log /var/log/nginx/your-domain.com_access.log;
}

If your server uses a web server Apache, sample .htaccess file contents:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>

For more info read here:
https://symfony.com/doc/current/setup/web_server_configuration.html

Upload files and configuration

Unzip the archive with the files and upload to your domain folder. Keep in mind that the domain must point to a public folder.
You can also upload the archive to a folder, for example: /var/www/your-domain.com/, and unpack it on the server.
Set permissions on folders: 0755
Set file permissions: 644
Set permissions 0777 to folder "var".

Additional info: https://symfony.com/doc/current/setup/file_permissions.html

You can download video file https://slideshow.myvedit.com/assets/video/slideshow-sample.mp4 and upload to your folder "/public/assets/video/".

Open a file ".env" file in a text editor. You must edit the line:
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
Here you must specify the username, password and database name.

To configure the sending of mail, you must specify the parameters in the line:
MAILER_URL=null://localhost
Example of SMTP parameters for Gmail:
MAILER_URL=gmail://your-name@gmail.com:your-password@smtp.gmail.com

Application setup

To create a database, use a dump from the file: "/documentation/video-slideshow-maker.sql". To upload this dump, you can use phpMyAdmin on your server. You can insert a file on the "Import" tab or insert content into the field on the tab "SQL" (then press the button "Go").

Open a file "/config/services.yaml" file in a text editor.
Here you can configure some parameters:

  • app.name - The name of your site.
  • app.admin_email - Admin email address.
  • app.queue_size - The size of the video creation queue. The number of simultaneous processes. This number depends on the number of processor cores on your server.
  • app.debug - Logging of all commands for creating videos, etc. The log is in the file: "/public/userfiles/tmp/log.txt".
  • app.melt_path - Path where is located Melt. Default: "/usr/bin/melt".
  • app.projects_store_hours - How many hours you need to store project files. After this time, all projects and files will be deleted.
  • app.max_photos - The maximum number of photos in the project.
  • app.languages - List of languages for the switch at the top of the page.

After changing the configuration you need to refresh the cache. To do this, you can run the command in the terminal: php /var/www/your-domain.com/bin/console cache:clear
Or simply delete the entire contents of the folder "/var/cache/prod/".

Insert banner code you can in the template: "/templates/base.html.twig". After changing the templates you need to refresh the cache.

Cron settings

What is Cron (Crontab)?
https://en.wikipedia.org/wiki/Cron

Create task for Cron for queue processing.

*/1 * * * * php /var/www/your-domain.com/bin/console app:queue > /dev/null
0 * * * * php /var/www/your-domain.com/bin/console app:clean > /dev/null

On the dedicated server or VDS you need in the terminal run the command:
sudo crontab -u www-data -e
If you run this command in the terminal, in the file that appears below you need to add the code given above.

Perhaps on your hosting (server) there is a special interface for creating tasks for Cron. Please contact your hosting support.

Admin Area

You can enter the admin interface at:
http://your-site.com/admin

Default username and password:
admin / admin

After authorization, you can change the password and email address in the "Profile" section.
In the admin interface you can see a list of active projects, view projects and delete them if necessary.

Libraries