dev-l5
dev-l5A laravel audio and video conversion, thumbnail generator and metadata editor package powered by ffmpeg
MIT
The Requires
by Rafael Sampaio
by Carlo Villamayor
by Hansim Costel
laravel converter ffmpeg ffprobe
A laravel audio and video conversion, thumbnail generator and metadata editor package powered by ffmpeg
**** NOTE **** This is a duplicate of https://github.com/rafasamp/sonus. I have duplicated because the original package was abandoned and i nedeed more stuffs for working with videos on Laravel. Sonus is a tool designed to leverage the power of Laravel 4 and ffmpeg to perform tasks such as:, (*2)
Update your composer.json
file and add the following under the require
key, (*3)
"hansim/sonus": "dev-master"
For Laravel 5 use, (*4)
"hansim/sonus": "dev-l5"
Run the composer update command:, (*5)
$ composer update
In your config/app.php
add 'Hansim\Sonus\SonusServiceProvider'
to the end of the $providers
array, (*6)
'providers' => array( 'Illuminate\Foundation\Providers\ArtisanServiceProvider', 'Illuminate\Auth\AuthServiceProvider', ... 'Hansim\Sonus\SonusServiceProvider', ),
Still under config/app.php
add 'Sonus' => 'Hansim\Sonus\Facade'
to the $aliases
array, (*7)
'aliases' => array( 'App' => 'Illuminate\Support\Facades\App', 'Artisan' => 'Illuminate\Support\Facades\Artisan', ... 'Sonus' => 'Hansim\Sonus\Facade', ),
Run the artisan
command below to publish the configuration file, (*8)
$ php artisan config:publish Hansim/Sonus
Navigate to app/config/packages/Hansim/Sonus/config.php
and update all four parameters, (*9)
Here is a simple example of a file being converted from FLAC to AAC:, (*10)
Sonus::convert()->input('foo.flac')->bitrate(128)->output('bar.aac')->go();
Sonus can also convert video files:, (*11)
Sonus::convert()->input('foo.avi')->bitrate(300, 'video')->output('bar.flv')->go();
Sonus can also return media information as an array or json, (*12)
Sonus::getMediaInfo('foo.mov');
Sonus can also easily generate smart movie thumbnails like this, (*13)
Sonus::getThumbnails('foo.mp4', 'foo-thumb', 5); // Yields 5 thumbnails
Sonus can also thumbnify your movie (create thumbs for a short preview), (*14)
Sonus::thumbnify('foo.mp4', 'foo-thumb', 40, '400'); // Yields 40 thumbnails (every 10 seconds) and video has 400 secs
Although Sonus contains several preset parameters, you can also pass your own, (*15)
Sonus::convert()->input('foo.flac')->output('bar.mp3')->go('-b:a 64k -ac 1');
Make sure the progress
and tmp_dir
options are set correctly in the config.php file, (*16)
'progress' => true, ... 'tmp_dir' => '/Applications/ffmpeg/tmp/'
Pass the progress method when initiating a conversion, (*17)
Sonus::convert()->input('foo.avi')->output('bar.mp3')->progress('uniqueid')->go();
Now you can write a controller action to return the progress for the job id you passed and call it using any flavor of JavaScript you like, (*18)
public function getJobProgress($id) { return Sonus::getProgress('uniqueid'); }
Sonus uses PHP's shell_exec function to perform ffmpeg and ffprobe commands. This command is disabled if you are running PHP 5.3 or below and safe mode is enabled., (*19)
Please make sure that ffmpeg and ffprobe are at least the following versions:, (*20)
Also, remember that filepaths must be relative to the location of FFMPEG on your system. To ensure compatibility, it is good practice to pass the full path of the input and output files. Here's an example working in Laravel:, (*21)
$file_in = Input::file('audio')->getRealPath(); $file_out = '\path\to\my\file.mp3'; Sonus::convert()->input($file_in)->output($file_out)->go();
Lastly, Sonus will only convert to formats which ffmpeg supports. To check if your version of ffmpeg is configured to encode or decode a specific format you can run the following commands using php artisan tinker
, (*22)
var_dump(Sonus::canEncode('mp3')); var_dump(Sonus::canDecode('mp3'));
To get a list of all supported formats you can run, (*23)
var_dump(Sonus::getSupportedFormats());
Please make sure the following statements are true before opening an issue:, (*24)
1) I am able to access FFMPEG on terminal using the same path I defined in the Sonus configuration file, (*25)
2) I have checked the error logs for the webserver and found no FFMPEG output messages, (*26)
Usually all concerns are taken care of by following these two steps. If you still find yourself having issues you can always open a trouble ticket., (*27)
Sonus is free software distributed under the terms of the MIT license., (*28)
Any questions, feel free to contact me., (*29)
Any issues, please report here, (*30)
A laravel audio and video conversion, thumbnail generator and metadata editor package powered by ffmpeg
MIT
laravel converter ffmpeg ffprobe