Stars: 111
Forks: 27
Pull Requests: 6
Issues: 32
Watchers: 7
Last Updated: 2022-11-24 11:16:24
Thumbnail for a given video using FFMpeg
License: MIT License
Languages: PHP
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
Version
1.4.5
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
Installing dependency software
This package relays on FFMpeg, A complete, cross-platform solution to record, convert and stream audio and video i.e, Multimedia .
Run following command to install FFMpeg
sudo apt-get update
sudo apt-get install ffmpegAdd the mc3man ppa
sudo add-apt-repository ppa:mc3man/trusty-mediaRun following command to Update the package list.
sudo apt-get update
sudo apt-get update sudo apt-get dist-upgradeNow FFmpeg is available to be installed with apt , Run this command
sudo apt-get install ffmpeg
Enable EPEL repository
for centos 6
rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpmfor centos 5
rpm -Uvh http://mirrors.kernel.org/fedora-epel/5/i386/epel-release-5-4.noarch.rpmfor centos 7
yum install epel-releaseCheck whether EPEL respository is eabled by the following command
yum repolistImport the official GPG key of Nux Dextop repository:
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.roInstall Nux Dextop with yum command as follows.
centos 6
rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpmcentos 7
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpmNow verify that Nux Dextop repository is successfully installed:
yum repolistRun following command to install FFMpeg
yum install ffmpegRefer to the following links
Installation
composer require lakshmaji/thumbnailLakshmaji\Thumbnail\ThumbnailServiceProvider::class,'Thumbnail' => Lakshmaji\Thumbnail\Facade\Thumbnail::class, composer updateConfigurations
php artisan vendor:publish#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 = 12This ensures that all the generated thumbnails with watermarks are having fixed dimensions
Generating Thumbnail
The following example illustrates the usage of Thumbnail package
<?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 |
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.
MISCELLANEOUS
Thumbnail::getThumbnail($video_path,$thumbnail_path,$thumbnail_image,$time_to_image);'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', ''),
],
], Thumbnail::getThumbnail($video_path,$thumbnail_path,$thumbnail_image); $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