Thumbnails for videos

1.4.51 2017-10-19 03:36 UTC

This package is auto-updated.

Last update: 2022-11-08 14:16:45 UTC


Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads composer.lock

Wiki on web


Index Description
What it is - Introduction
Installing FFMpeg - Installing dependency software
Installation - Installing Thumbnail package, Lararavel Integration
Docs - Methods and Description
Generating Thumbnail - Generating thumbnail image with this package
Miscellaneous - Miscellaneous content regarding method calls
License - License Information

What it is

  • Generates Thumbnail (image) for a given video
  • This uses FFMpeg.
  • Converts video to WebM format.




Laravel version Thumbnail version
5.6 1.4.5
5.5 1.4.5
5.4 1.4.5
5.2 1.4.5 or 1.4.2 or 1.3.0
5.1 1.4.5 or 1.4.2 or 1.3.0
5.0 1.4.5 or 1.4.2 or 1.3.0

Note: For 1.4.3 and other earlier version documentation refer here

Installing dependency software

This package relays on FFMpeg, A complete, cross-platform solution to record, convert and stream audio and video i.e, Multimedia .

Installing FFMpeg on 16.04 (Xenial Xerus) LTS

  • Run following command to install FFMpeg

    sudo apt-get update
    sudo apt-get install ffmpeg

Installing FFMpeg on Ubuntu 14.04 LTS

  • Add the mc3man ppa

    sudo add-apt-repository ppa:mc3man/trusty-media
  • Run following command to Update the package list.

    sudo apt-get update
    sudo apt-get update sudo apt-get dist-upgrade
  • Now FFmpeg is available to be installed with apt , Run this command

    sudo apt-get install ffmpeg

Installing FFMpeg on CentOS

  • Enable EPEL repository

    • for centos 6

         rpm -Uvh
    • for centos 5

         rpm -Uvh
    • for centos 7

         yum install epel-release
  • Check whether EPEL respository is eabled by the following command

       yum repolist
  • Import the official GPG key of Nux Dextop repository:

       rpm --import
Nux Dextop is a third-party RPM repository which contains many popular desktop and multimedia related packages (e.g., Ardour, Shutter, etc) for CentOS, RHEL and ScientificLinux. Currently, Nux Dextop repository is available for CentOS/RHEL 6 and 7.
  • Install Nux Dextop with yum command as follows.

    • centos 6

      rpm -Uvh
    • centos 7

      rpm -Uvh
  • Now verify that Nux Dextop repository is successfully installed:

       yum repolist
  • Run following command to install FFMpeg

       yum install ffmpeg

Installing FFMpeg on Windows

Refer to the following links




  • This package is available on packagist
    composer require lakshmaji/thumbnail
  • Add the Service Provider to providers array
  • Add the Facade to aliases array
'Thumbnail' => Lakshmaji\Thumbnail\Facade\Thumbnail::class,
  • Try updating the application with composer (dependencies but not mandatory 😉 )
  composer update


  • Publish the configuration file , this will publish thumbnail.php file to your application config directory.
    php artisan vendor:publish
  • Configure the required FFMpeg configurations.
  • FFMpeg will autodetect ffmpeg and ffprobe binaries. If you want to give binary paths explicitly, you can configure them in .env file.
  • You can specify the output image dimensions in .env file. (dimensions array parameters)
  • Add watermark or playback button url to watermark arry aviable in thumbnail.php
  • Or you can configure them from laravel .env file, the sample watermark resource configurations in .env file
#Thumbnail image dimensions

#Watermark image
WATERMARK_PATH  = /var/www/html/thumb/storage/watermark/p.png

#Custom FFMPEG binaries path
FFMPEG_PATH     = /opt/local/ffmpeg/bin/ffmpeg
FFPROBE_PATH    = /opt/local/ffmpeg/bin/ffprobe

This ensures that all the generated thumbnails with watermarks are having fixed dimensions

Generating Thumbnail

The following example illustrates the usage of Thumbnail package


namespace Trending\Http\Controllers\File;

use Carbon;
use Thumbnail;
use Illuminate\Http\Request;
use Trending\Http\Controllers\Controller;

 * -----------------------------------------------------------------------------
 *   ThumbnailTest - a class illustarting the usage og Thumbnail package 
 * -----------------------------------------------------------------------------
 * This class having the functionality to upload a video file 
 * and generate corresponding thumbnail
 * @since    1.0.0
 * @version  1.0.0
 * @author   lakshmaji 
class ThumbnailTest extends AnotherClass
  public function testThumbnail()
    // get file from input data
    $file             = $this->request->file('file');

    // get file type
    $extension_type   = $file->getClientMimeType();
    // set storage path to store the file (actual video)
    $destination_path = storage_path().'/uploads';

    // get file extension
    $extension        = $file->getClientOriginalExtension();

    $timestamp        = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());
    $file_name        = $timestamp;
    $upload_status    = $file->move($destination_path, $file_name);         

      // file type is video
      // set storage path to store the file (image generated for a given video)
      $thumbnail_path   = storage_path().'/images';

      $video_path       = $destination_path.'/'.$file_name;

      // set thumbnail image name
      $thumbnail_image  = $fb_user_id.".".$timestamp.".jpg";
      // set the thumbnail image "palyback" video button
      $water_mark       = storage_path().'/watermark/p.png';

      // get video length and process it
      // assign the value to time_to_image (which will get screenshot of video at that specified seconds)
      $time_to_image    = floor(($data['video_length'])/2);

      $thumbnail_status = Thumbnail::getThumbnail($video_path,$thumbnail_path,$thumbnail_image,$time_to_image);
        echo "Thumbnail generated";
        echo "thumbnail generation has failed";
// end of class ThumbnailTest
// end of file ThumbnailTest.php  


VIDEO_SOURCE_DIRECTORY Video resource source path i.e, the name of video along with location where video is present mandatory
THUMBNAIL_STORAGE_DIRECTORY The destination path to save the generated thumbnail image mandatory
THUMBNAIL_NAME The name of Image for output mandatory
TIME_TO_TAKE_SCREENSHOT Time to take screenshot of the video optional
thumbnail image optional

Note : Some of the method parameters are deprecated from version 1.4.4. For earlier versions of this package (<=1.4.3) refer here. The watermark and output image (thumbnail image) dimensions can be configured from app/config.php file.


  • To generate the thumbnail image ( screen shot of video) with playback button
    • Your controller class
    • Your config file
    'watermark' => [
            'image' => [
                'enabled' => env('WATERMARK_IMAGE', true),
                'path'    => env('WATERMARK_PATH', ''),
            'video' => [
                'enabled' => env('WATERMARK_VIDEO', false),
                'path'    => env('WATERMARK_PATH', ''),
  • To generate the thumbnail image ( screen shot of video)
  • To convert video to WebM format
            $video_path = $destination_path.'/'.$file_name; // source video path
                        $clipped_video  = $destination_path.'/'.'clipped_'.$file_name; // converted video file