php - 未找到 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,谢谢!
解决方案
下载 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'
推荐阅读
- java - Java - 以简单的方式使用 Key
- php - 谷歌图表表现异常
- php - 用 php-vips 覆盖文本
- javascript - 将逗号添加到 NgFor 列表的最佳方法
- css - Electron 应用程序中的 AngularJs Bootstrap 组件在编译的构建中闪烁
- google-workspace - 此开发者插件受您组织内的政策限制
- javascript - 在 php 中使用 Chartjs 后图表未显示
- c# - 使用 web.config 的 C# webmethod 的 CacheDuration
- http - 在服务器上检测 HTTP 请求失败
- eslint - 是否可以在 .exlintrc.js 文件中指定 ESLint 输入文件?