首页 > 解决方案 > 未找到 PHP ffmpeg

问题描述

所以我已经浏览了所有论坛,但我仍然收到错误“sh:1:/usr/bin/ffmpeg:未找到”。如果我从终端运行 ffmpeg,它可以正常工作并且可以毫无问题地转换视频,但如果我使用 PHP exec 或 shell_exec,则始终找不到返回 ffmpeg。

这是我的代码:

$cmd = "/usr/bin/ffmpeg";

$run = exec($cmd." -i 'linkvideo.m3u8' -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 /test_stream/newfile.mp4 2>&1");

var_dump($run);

如果我从终端运行 which ffmpeg 或 whereis ffmpeg,它将返回 /usr/bin/ffmpeg,但如果我从我的代码中执行('which ffmpeg'),它将返回 ffmpeg not found。我已经 chown 和 chmod ffmpeg 来授予 rwx,我尝试将 ffmpeg 移动到 /usr/local/bin 仍然是相同的结果。如果我从终端运行 whoami 它将显示 root 但如果从我的代码中使用 exec('whoami') 它将显示 www-data 所以也许我错过了有关用户的一些信息但我也已经尝试将 ffmpeg 从 root chown 到 www-data结果仍然是找不到ffmpeg,也许任何人都可以提供帮助,我正在使用codeigniter并且已经使用sudo apt-get ffmpeg在服务器中安装了ffmpeg,谢谢!

标签: phpcodeigniterffmpegexecvideo-conversion

解决方案


下载 FFmpeg 和 ffprobe 之后,然后将文件夹放在应用程序的 third_part 文件夹中。

    try {
        $FFMpeg = FFMpeg\FFProbe::create([
            'ffmpeg.binaries'  => APPPATH . '/third_party/ffmpeg',
            'ffprobe.binaries'  => APPPATH . '/third_party/ffprobe',
        ]);
    } catch (Exception $e) {
        try {
            $FFMpeg = FFMpeg\FFProbe::create([
                'ffmpeg.binaries' => '/usr/bin/ffmpeg',
                'ffprobe.binaries' => '/usr/bin/ffprobe'
            ]);
        } catch (Exception $e) {
            throw new Exception("However Unable to load FFProbe driver for FFmpeg");
        };
    };

还; 如果您使用与 Ubuntu 不同的操作系统,请更改第二次尝试。

对于 Mac 操作系统:

'ffmpeg.binaries'  => '/usr/local/bin/ffmpeg',
'ffprobe.binaries' => '/usr/local/bin/ffprobe' 

对于 Windows:

'ffmpeg.binaries'  => 'C:/FFmpeg/bin/ffmpeg.exe',
'ffprobe.binaries' => 'C:/FFmpeg/bin/ffprobe.exe'

对于 Ubuntu:

'ffmpeg.binaries' => '/usr/bin/ffmpeg',   
'ffprobe.binaries' => '/usr/bin/ffprobe'

推荐阅读