1. Go to this page and download the library: Download nhattuanbl/lara-media library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nhattuanbl / lara-media example snippets
return [
//default database connection - not tested on other connection
'connection' => env('LARA_MEDIA_CONNECTION', 'mongodb'),
//default model store media information
'model' => \Nhattuanbl\LaraMedia\Models\LaraMedia::class,
//default db table name
'table_name' => 'media',
//dashboard
'web' => [
'enabled' => true,
'domain' => null,
'prefix' => 'lara-media',
'middleware' => ['web'],
],
'public_assets' => [
'root' => env('LARA_MEDIA_PUBLIC_ROOT', 'app'), //should be set in .env file
'url' => env('LARA_MEDIA_PUBLIC_URL', '/assets/media'), //should be set in .env file
],
'temporary' => [
'enabled' => true,
'route_path' => 'download',
'route_name' => 'web.download',
],
//default storage disk
'disk' => env('LARA_MEDIA_DISK', 'local'),
//dir name - can be date path - null for id / default: 'Y/m/d'
'store_path' => 'Y/m/d',
'conversion' => [
'connection' => env('LARA_MEDIA_QUEUE_CONNECTION', 'mongodb'),
'queue' => env('LARA_MEDIA_QUEUE_NAME', 'conversion'),
//temporary directory
'temp' => storage_path('temp'),
//delete original file after convert
'keep_original' => env('LARA_MEDIA_KEEP_ORIGINAL', true),
//number of threads to use
'threads' => env('LARA_MEDIA_THREAD', 16),
//ffmpeg binary path
'ffmpeg_path' => env('LARA_MEDIA_FFMPEG_PATH', '/usr/bin/ffmpeg'),
'ffprobe_path' => env('LARA_MEDIA_FFPROBE_PATH', '/usr/bin/ffprobe'),
],
'watermark' => [
'path' => null, //storage_path('your watermark image.png')
'position' => \Nhattuanbl\LaraMedia\Enums\PositionEnum::Center,
'opacity' => 0.2,
'height_percent' => 50,
],
'photo' => [
//get main color store in hex format
'detect_main_color' => true,
],
'video' => [
//better quality at lower sizes
'2pass_encoding' => false,
//max timout for conversion
'timeout' => 7200,
'encoding' => [
'mp4' => ['libx264', 'aac'],
'webm' => ['libvpx', 'libvorbis'],
'ts' => ['libx264', 'aac'],
'3gp' => ['libx264', 'aac'],
'3g2' => ['libx264', 'aac'],
'mov' => ['libx264', 'aac'],
'fli' => ['libx264', 'aac'],
'mkv' => ['libx264', 'aac'],
'asf' => ['wmv2', 'wmav2'],
'wmv' => ['wmv2', 'wmav2'],
],
],
'audio' => [
'timeout' => 7200,
'encoding' => [
'aac' => 'aac', //
//App\Models\User.php
use MongoDB\Laravel\Eloquent\HybridRelations;
use Nhattuanbl\LaraMedia\Contracts\AudioRegister;
use Nhattuanbl\LaraMedia\Contracts\HasMedia;
use Nhattuanbl\LaraMedia\Contracts\MediaRegister;
use Nhattuanbl\LaraMedia\Contracts\VideoRegister;
use Nhattuanbl\LaraMedia\Enums\PositionEnum;
use Nhattuanbl\LaraMedia\Enums\ResolutionEnum;
class User extends Model
{
use HasMedia, HybridRelations;
...
public function registerMediaAlbum(): MediaRegister
{
return $this->addMediaAlbum()
->acceptsMimeTypes(['image/*']) // use */* for all mime types
->album('defaultalbum') //default album name for all uploaded files
->limit(3); //global limit
}
public function registerVideoAlbum(): VideoRegister
{
return $this->addVideoAlbum([ResolutionEnum::H240, ResolutionEnum::H360])
->limit(5) // override registerMediaAlbum limit
->album('videoalbum') //override registerMediaAlbum album
->onQueue('default') //optional - override lara-media config
->onConnection('sync') //optional - override lara-media config
->format('mp4') //optional
->quality(55) //optional - quality video percent 0-100
->keepOrigin(false) //optional - keep original file after convert
->description('some desc') //optional - store video description
->watermark(
storage_path('watermark.png'),
PositionEnum::BottomLeft,
0.5,
50
) //all optional - override lara-media config
->posters(
5, //
//App\Http\Controllers\
use Nhattuanbl\LaraMedia\Models\LaraMedia;
//add media from local file
$model->addMedia(storage_path('photo.webp'))->toAlbum();
//add media from url
$model->addMedia('https://example.com/photo.webp')
->onDisk('override model register disk')
->toAlbum('override model register album name');
//add media from base64
$model->addMedia('data:image/png;base64,....')
->onQueue('override model register')
->toAlbum();
//copy media from LaraMedia
$model->addMedia(LaraMedia::findOrFail($id))
->withoutResponsive() //optional - disable conversion
->toAlbum();
//add media from request
$model->addMedia(request()->file)->toAlbum();
//get original media url
LaraMedia::findOrFail($id)->url;
//get media url with version
LaraMedia::findOrFail($id)->getUrlAttribute('400');
//get media temporary url
LaraMedia::findOrFail($id)->temporaryUrl(
now()->addHours(1)->timestamp, //expire time
$version, //optional - null for original version
['views' => 1] //optional - allow accessible only 1 time
);