3
votes

I am using "php-ffmpeg/php-ffmpeg": "~0.5" with Laravel 5. I am using this library for compression and conversion of recorded videos. I will explain the scenario first.

When I execute following code from controller it works like charm.

$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open(public_path()."/videos/harsh.webm");
$video
    ->filters()
    ->resize(new \FFMpeg\Coordinate\Dimension(640, 480))
    ->synchronize();
$video
    ->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save(public_path().'/videos/converted/kaushik.jpg');
$format=new \FFMpeg\Format\Video\X264('libmp3lame', 'libx264'); 
$format-> setKiloBitrate(300);
$video->save($format,public_path().'videos/converted/kaushik.mp4');``

But when I put this code in a queue job then it fails with following error

[FFMpeg\Exception\RuntimeException]
Encoding failed [Alchemy\BinaryDriver\Exception\ExecutionFailureException]
ffmpeg failed to execute command '/usr/bin/ffmpeg' '-y' '-i' '/opt/lampp/htdocs/candidate/public/videos/harsh.webm' '-async' '1' '-metadata:s:v:0 ' 'start_time=0' '-s' '640x480' '-vcodec' 'libx264' '-acodec' 'libmp3lame' '-b:v' '1000k' '-refs' '6' '-coder' '1' '-sc_threshold' '40' '-flags' '+loop' '-me_range' '16' '-subq' '7' '-i_qfactor' '0.71' '-qcomp' '0.6' '-qdiff' '4' '-trellis' '1' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes57ece7d794da4wdw13/pass-57ece7d794e2a' 'videos/converted/kaushik.mp4' ``

I am able to convert video in MWV and WEBM using following

$video->save(new \FFMpeg\Format\Video\WMV(), 'export-wmv.wmv');
$video->save(new \FFMpeg\Format\Video\WebM(), 'export-webm.webm');

only mp4 fails if I use the

$format=new \FFMpeg\Format\Video\X264('libmp3lame', 'libx264');

What would be the issue?

Sorry for my code markup in this question, I tried lot but faild, I am new to it!

1
@diiN_ Thanks for markupVaibhavraj S. Roham
Unrelated to your issue, but there is no reason to declare so many x264 options: that's what the encoding presets are for.llogan

1 Answers

5
votes

Solved the problem.

The problem was the directory where I was storing the converted video. I gave the write access to directory and It works very well.