2017 © Pedro Peláez
 

library thumbnail

Thumbnails for videos

image

lakshmaji/thumbnail

Thumbnails for videos

  • Tuesday, July 3, 2018
  • by lakshmaji
  • Repository
  • 6 Watchers
  • 73 Stars
  • 7,011 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 12 Forks
  • 0 Open issues
  • 13 Versions
  • 22 % Grown

The README.md

Thumbnail

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads composer.lock, (*1)

Wiki on web, (*2)

INDEX

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.

Version

1.4.5, (*3)

Compatibility

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, (*4)


Installing dependency software

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

Installing FFMpeg on 16.04 (Xenial Xerus) LTS

  • Run following command to install FFMpeg, (*6)

    sudo apt-get update
    sudo apt-get install ffmpeg
    

Installing FFMpeg on Ubuntu 14.04 LTS

  • Add the mc3man ppa, (*7)

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

    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, (*9)

    sudo apt-get install ffmpeg
    

Installing FFMpeg on CentOS

  • Enable EPEL repository, (*10)

    • for centos 6, (*11)

      rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
      
    • for centos 5, (*12)

      rpm -Uvh http://mirrors.kernel.org/fedora-epel/5/i386/epel-release-5-4.noarch.rpm
      
    • for centos 7, (*13)

      yum install epel-release
      
  • Check whether EPEL respository is eabled by the following command, (*14)

     yum repolist
    
  • Import the official GPG key of Nux Dextop repository:, (*15)

     rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
    
  • Install Nux Dextop with yum command as follows., (*16)

    • centos 6, (*17)

      rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm
      
    • centos 7, (*18)

      rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
      
  • Now verify that Nux Dextop repository is successfully installed:, (*19)

       yum repolist
    
  • Run following command to install FFMpeg, (*20)

       yum install ffmpeg
    

Installing FFMpeg on Windows

Refer to the following links, (*21)

WikiHow, (*22)

AdapticeSolutions, (*23)


Installation

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


Configurations

  • 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
THUMBNAIL_IMAGE_WIDTH  = 320
THUMBNAIL_IMAGE_HEIGHT = 240

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

#Custom FFMPEG binaries path
FFMPEG_BINARIES = true
FFMPEG_PATH     = /opt/local/ffmpeg/bin/ffmpeg
FFPROBE_PATH    = /opt/local/ffmpeg/bin/ffprobe
FFMPEG_TIMEOUT  = 3600
FFMPEG_THREADS  = 12

This ensures that all the generated thumbnails with watermarks are having fixed dimensions, (*24)


Generating Thumbnail

The following example illustrates the usage of Thumbnail package, (*25)


<?php 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); if($upload_status) { // 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); if($thumbnail_status) { echo "Thumbnail generated"; } else { echo "thumbnail generation has failed"; } } } } // end of class ThumbnailTest // end of file ThumbnailTest.php

METHOD

$thumbnail_status = Thumbnail::getThumbnail(<VIDEO_SOURCE_DIRECTORY>,<THUMBNAIL_STORAGE_DIRECTORY>,<THUMBNAIL_NAME>);
$thumbnail_status = Thumbnail::getThumbnail(<VIDEO_SOURCE_DIRECTORY>,<THUMBNAIL_STORAGE_DIRECTORY>,<THUMBNAIL_NAME>,<TIME_TO_TAKE_SCREENSHOT>);

| PARAMETER | DESCRIPTION |FIELD | |:-------------- |:----------------------------------------|:---| |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|, (*26)

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., (*27)


MISCELLANEOUS

  • To generate the thumbnail image ( screen shot of video) with playback button
    • Your controller class php Thumbnail::getThumbnail($video_path,$thumbnail_path,$thumbnail_image,$time_to_image);
    • Your config file php 'watermark' => [ 'image' => [ 'enabled' => env('WATERMARK_IMAGE', true), 'path' => env('WATERMARK_PATH', 'http://voluntarydba.com/pics/YouTube%20Play%20Button%20Overlay.png'), ], 'video' => [ 'enabled' => env('WATERMARK_VIDEO', false), 'path' => env('WATERMARK_PATH', ''), ], ],
  • To generate the thumbnail image ( screen shot of video)
  Thumbnail::getThumbnail($video_path,$thumbnail_path,$thumbnail_image);
  • 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

Thumbnail::clipWebM($video_path,$clipped_video);

LICENSE

MIT, (*28)

The Versions

03/07 2018

dev-master

9999999-dev

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmaji

laravel composer thumbnails video thumbnail screenshot ffmpeg

19/10 2017

1.4.51

1.4.51.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmaji

laravel composer thumbnails video thumbnail screenshot ffmpeg

19/05 2017

1.4.5

1.4.5.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmaji

laravel composer thumbnails video thumbnail screenshot ffmpeg

06/05 2017

v1.4.4

1.4.4.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmaji

laravel composer thumbnails video thumbnail screenshot ffmpeg

22/04 2017

v1.4.3

1.4.3.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmaji

laravel composer thumbnails video thumbnail screenshot ffmpeg

31/01 2017

v1.4.2

1.4.2.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

laravel composer thumbnails video thumbnail screenshot ffmpeg

27/01 2017

v1.4.1

1.4.1.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

laravel composer thumbnails video thumbnail screenshot ffmpeg

27/01 2017

v1.4.0

1.4.0.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

laravel composer thumbnails video thumbnail screenshot ffmpeg

18/05 2016

v1.3.0

1.3.0.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

thumbnails

16/05 2016

v1.2.1

1.2.1.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

thumbnails

16/05 2016

v1.2.0

1.2.0.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

thumbnails

13/05 2016

v1.1.0

1.1.0.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

thumbnails

12/05 2016

v1.0.0

1.0.0.0

Thumbnails for videos

  Sources   Download

MIT

The Requires

 

by Avatar lakshmajim

thumbnails