Php FFMpeg:FFMpeg无法执行命令错误

Php FFMpeg:FFMpeg无法执行命令错误,php,ffmpeg,ffmpeg-php,Php,Ffmpeg,Ffmpeg Php,我正在尝试通过php/html上传将1.2mb文件的视频文件转码到我的网站服务器,但我不断收到错误: PHP致命错误: 未捕获异常 带有的“Alchemy\BinaryDriver\Exception\ExecutionFailureException” 消息“ffmpeg无法执行命令”/usr/local/bin/ffmpeg'-y' “-我 “/home/user/public_html/contents/videos/1490719990_MP4_360p_Short_video_clip

我正在尝试通过php/html上传将1.2mb文件的视频文件转码到我的网站服务器,但我不断收到错误:

PHP致命错误:

未捕获异常 带有的“Alchemy\BinaryDriver\Exception\ExecutionFailureException” 消息“ffmpeg无法执行命令”/usr/local/bin/ffmpeg'-y' “-我 “/home/user/public_html/contents/videos/1490719990_MP4_360p_Short_video_clip_nature_MP4.MP4” “-异步”“1”“-元数据:s:v:0”“开始时间=0”“-r”“16”“-b\u策略” “1”-bf”“3”-g”“9”-vcodec”“libx264”-acodec”“libmp3lame” “-b:v”“128k”“-参考”“6”“-编码器”“1”“-sc_阈值”“40”“-标志” '+循环'-me_范围''16'-subq''7'-i_qfactor''0.71'-qcomp' “0.6”-qdiff”“4”-网格”“1”-b:a”“8k”-ac”“1”-传递”“1” “-passlogfile” “/tmp/ffmpeg-passes58dab05a323b6eknk4/pass-58dab05a32465” “/home/user/public_html/contents/videos/1490719990_MP4_360p_Short_video_clip_nature_MP4_22995.MP4” 在里面 /home/user/public_html/app/ffmpeg/vendor/alchemy/binary-driver/src/alchemy/BinaryDriver/ProcessRunner.php:100

堆栈跟踪:

0/home/user/public_html/app/ffmpeg/vendor/alchemy/binary-driver/src/alchemy/BinaryDriver/ProcessRunner.php(72): 阿尔奇 /home/user/public_html/app/ffmpeg/vendor/php-ffmpeg/php-ffmpeg/src/ffmpeg/Media/Video.php 在线168

有趣的是,同一台服务器正在使用
ffprobe
ffmpeg
提取帧并获取同一文件的持续时间

下面是我用来转码的代码:

$ffmpeg = $ffmpeg = FFMpeg\FFMpeg::create(['timeout'=>3600, 'ffmpeg.thread'=>12, 'ffmpeg.binaries'  => '/usr/local/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/local/bin/ffprobe']);

            $ffprobe_prep = FFMpeg\FFProbe::create(['ffmpeg.binaries'  => '/usr/local/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/local/bin/ffprobe']);
            $ffprobe = $ffprobe_prep->format($video_file);

            $video = $ffmpeg->open($video_file);

            // Get video duration to ensure our videos are never longer than our video limit.
            $duration = $ffprobe->get('duration');

            // Use mp4 format and set the audio bitrate to 56Kbit and Mono channel.
            // TODO: Try stereo later...
            $format = new FFMpeg\Format\Video\X264('libmp3lame', 'libx264');
            $format
                -> setKiloBitrate(128)
                -> setAudioChannels(1)
                -> setAudioKiloBitrate(8);

            $first = $ffprobe_prep
                        ->streams($video_file)
                        ->videos()
                        ->first();

            $width = $first->get('width');

            if($width > VIDEO_WIDTH){
                // Resize to 558 x 314 and resize to fit width.
                $video
                    ->filters()
                    ->resize(new FFMpeg\Coordinate\Dimension(VIDEO_WIDTH, ceil(VIDEO_WIDTH / 16 * 9)));
            }

            // Trim to videos longer than three minutes to 3 minutes.
            if($duration > MAX_VIDEO_PLAYTIME){

                $video
                    ->filters()
                    ->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(0), FFMpeg\Coordinate\TimeCode::fromSeconds(MAX_VIDEO_PLAYTIME));
            }

            // Change the framerate to 16fps and GOP as 9.
            $video
                ->filters()
                ->framerate(new FFMpeg\Coordinate\FrameRate(16), 9);

            // Synchronize audio and video
            $video->filters()->synchronize();

            $video->save($format, $video_file_new_2);
我已经联系了我的主人,没有重要的帮助。他们能提供给我的唯一有用信息是
ffmpeg
是在服务器上编译的,支持
libmp3lame

这段代码在本地主机上运行得非常好


如果您试图在控制台上启动此命令:'/usr/local/bin/ffmpeg'-y'-I''myvideo'-async''1'-metadata:s:v:0''start_time=0'-r''16'-b_策略'-1'-bf''3'-g''9'-vcodec''libx264'-acodec''libmp3lame'-b:v''128k'-refs''6'-“-编码器”“1”“-sc_阈值”“40”“-标志”“+循环”“-我_范围”“16”“-子Q”“7”“-我_qfactor”“0.71”“-qcomp”“0.6”“-qdiff”“4”“-网格”“1”“-b:a”“8k”“-ac”“1”“-传递”“1”“-传递日志文件”“/tmp/ffmpeg-passes58dab05a323b6eknk4/pass-58dab05a32465”“myvideo”“这是获取有关正在进行的反馈的最佳方式。我在共享主机上。”。我无法进入终点站。好的。在本地,转到
ffmpeg/vendor/php ffmpeg/php ffmpeg/src/ffmpeg/Media/Video.php
找到第167行并打印传递给“$this->driver->command();”的参数然后在你的主人身上做同样的事情。检查是否有一些不同,它们是不同的。本地的一个数组中有四个项目,但服务器上的一个也有。@IvánRodríguezTorres“您是否尝试在控制台上启动此命令”救了我一命。我的环境是Ubuntu18仿生海狸。出于许可原因,ffmpeg中似乎没有包含libfaac库。终端抛出错误:未知编码器'libfaac',然后我用
$format=new-FFMpeg\format\Video\X264('libmp3lame','libx264')解决
您是否尝试在控制台上启动此命令:'/usr/local/bin/ffmpeg'-y'-i''myvideo'-async''1'-metadata:s:v:0''start\u time=0'-r''16'-b_策略'-1''-bf''3'-g''9'-vcodec''libx264'-acodec''libmp3lame'-b:v''128k'-refs''6'-coder''1''-sc_阈值'-40'-flags''循环'-me范围'-subq''7'“-i_qfactor”“0.71”“-qcomp”“0.6”“-qdiff”“4”“-grillis”“1”“-b:a”“8k”“-ac”“1”“-pass”“1”“-passlogfile”“/tmp/ffmpeg-passes58dab05a323b6eknk4/pass-58dab05a32465”“myvideo”“这是获取有关正在发生的事情的反馈的最佳方式。我在共享主机上。我无法进入终点站。好的。在本地,转到
ffmpeg/vendor/php ffmpeg/php ffmpeg/src/ffmpeg/Media/Video.php
找到第167行并打印传递给“$this->driver->command();”的参数然后在你的主人身上做同样的事情。检查是否有一些不同,它们是不同的。本地的一个数组中有四个项目,但服务器上的一个也有。@IvánRodríguezTorres“您是否尝试在控制台上启动此命令”救了我一命。我的环境是Ubuntu18仿生海狸。出于许可原因,ffmpeg中似乎没有包含libfaac库。终端抛出错误:未知编码器'libfaac',然后我用
$format=new-FFMpeg\format\Video\X264('libmp3lame','libx264')解决