EC2サーバーでのFFmpegでのエンコードがffmpeg failed to execute commandで失敗する。
Laravelで開発を行っております。
EC2サーバーにアップしたMP4動画ファイルをFFmpegでエンコードして容量圧縮を行おうと対応いたしております。
しかし、
local.ERROR: ffmpeg failed to execute command '/usr/local/bin/ffmpeg' '-y' '-i' '/home/ec2-user/hoge/www/storage/app/video/filename' '-threads' '12' '-vcodec' 'libx264' '-acodec' 'aac' '-b:v' '500k' '-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' '-vf' '[in]scale=480:270 [out]' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes60c16cc7400d44ccrq/pass-60c16cc740722' '/home/ec2-user/hoge/www/storage/app/video/filenameSD'
local.ERROR: Encoding failed {"userId":1111,"email":"hoge@hoge.jp","exception":"[object] (FFMpeg\\Exception\\RuntimeException(code: 0): Encoding failed at /home/ec2-user/hoge/www/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/AbstractVideo.php:106, Alchemy\\BinaryDriver\\Exception\\ExecutionFailureException(code: 0): ffmpeg failed to execute command '/usr/local/bin/ffmpeg' '-y' '-i' '/home/ec2-user/hoge/www/storage/app/video/filename' '-threads' '12' '-vcodec' 'libx264' '-acodec' 'aac' '-b:v' '500k' '-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' '-vf' '[in]scale=480:270 [out]' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes60c16cc7400d44ccrq/pass-60c16cc740722' '/home/ec2-user/hoge/www/storage/app/video/filenameSD' at /home/ec2-user/hoge/www/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php:100)
とエラーが出ており、エンコードできておりません。
コマンドに不備があるのだと考えシンプルなコマンドに変更しましたが変わらずエラーが出ております。
以下は組み込んだコードになります。
$file = new File($localFile);
$format = new \FFMpeg\Format\Video\X264('aac');
$format->setKiloBitrate(500);
$file_name = $media->file_name;
FFMpeg::fromDisk('local')
->open($file_name)
//->addFilter( '-vf', config('scale=480:270'))
->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(480, 270));
})
//->addFilter( '-an', config(''))
//->addFilter( '-preset', config('fast'))
//->addFilter( '-tune', config('film'))
//->addFilter( '-crf', config('23'))
->export()
->toDisk('local')
->inFormat( $format )
->save($file_name.'SD');
$pathInfo = pathinfo($file_name.'SD');
$media->file_name = $file_name.'SD';
$media->save();
\Storage::disk('s3')->putFileAs(
$pathInfo['dirname'],
$file,
$pathInfo['filename']
);
$diskLocal->delete($file_name.'SD');
$diskLocal->delete($file_name);
こちら何が問題なのでしょうか。
何処を修正すればいいのでしょうか。
開発環境
Laravel Framework 5.5.44
になります。
同じ内容のコマンドをEC2サーバーに直接入力した際はエンコードが行われるのを確認しております。
よろしくお願い致します。
0 likes