如何在 PHP 中运行 ffmpeg 命令

Posted

技术标签:

【中文标题】如何在 PHP 中运行 ffmpeg 命令【英文标题】:How to run ffmpeg command in PHP 【发布时间】:2015-05-08 02:45:18 【问题描述】:

我需要在 php 中运行 ffmpeg 命令。

但是 php-ffmpeg 已经不再支持最新版本和过时了。

我可以知道在 web 文件(PHP、javascript、jQuery)中运行 ffmpeg 命令的替代方法吗?

我在 PHP 文件中尝试了 exec()shell_exec(),但得到了空白输出。

echo shell_exec("/usr/local/bin/ffmpeg  -i test.mp3  -codec:a libmp3lame -b:a 128k out.mp3");

 echo shell_exec("ffmpeg  -i test.mp3  -codec:a libmp3lame -b:a 128k  out.mp3");

【问题讨论】:

在服务器端你可以试试exec('ffmpeg .....'); @Santa'shelper 我尝试了 exec() 和 shell_exec() 但有空白输出。你能告诉我改变mp3比特率的语法吗?所以我很清楚我没有出错。 我不太擅长 ffmpeg,但它应该看起来像 exec('ffmpeg -i /path/to/my.mp3 -r 44100 /path/to/target.mp3', $output); var_dump($output); 警告:我不太确定 -ar 44100 【参考方案1】:

ffmpeg 在 stderr 上输出,因此您需要重定向输出。在命令行中添加2>&1

echo shell_exec("/usr/local/bin/ffmpeg -i test.mp3 -codec:a libmp3lame -b:a 128k out.mp3 2>&1");

然后你会看到输出。

【讨论】:

这里要注意2点:1)2前必须有空格,2)必须用双引号,不能单引号 当我在浏览器中运行文件时我不明白一件事是 ge 没有这样的文件或目录但是当我在终端中运行时一切正常请帮助 @mwangaben 你所说的“文件”是什么意思——你的意思是你想运行ffmpeg?确保您调用了 ffmpeg 的完整路径(例如,/usr/local/bin/ffmpeg),或者您在 PHP 中的 $PATH 包含 ffmpeg 所在的文件夹。【参考方案2】:

使用FFMpeg\FFMpeg,可以用composer安装:"php-ffmpeg/php-ffmpeg": "0.5.*@dev" (FFMpeg\FFMpeg Git Repository)

或者

使用Symfony Process,可以用composer安装:"symfony/process" : "~2.0" (Symfony Process Documentation)

或者

使用 proc_open() 函数。

FFMpeg\FFMpeg 使用 Symfony 进程Symfony 进程 使用 proc_open() 函数 :)

我更喜欢使用 Symfony 进程:

require 'vendor/autoload.php';

use Symfony\Component\Process\Process;
$process = new Process('ls -lsa');
$process->run();

【讨论】:

这都是矫枉过正,与OP的问题无关,这是一个简单的shell重定向问题。 这不应该被否决。 OP 确实要求提供从 PHP 脚本运行 ffmpeg 的替代方法,这就是它的答案。 正在破译 proc_open 的工作原理,结果发现我有 Symfony 可用,这更干净。【参考方案3】:

首先你必须在你的服务器上安装 ffmpeg 库。如果没有在您的服务器命令中安装 ffmpeg,将不会运行。

下面的链接会帮助你

https://ffmpeg.org/

https://www.resellerspanel.com/articles/dedicated-servers-articles/dedicated-servers-howtos/how-to-install-ffmpeg-on-a-dedicated-server/

然后在运行这个命令之后

 exec("ffmpeg  -i test.mp3  -codec:a libmp3lame -b:a 128k  out.mp3");

【讨论】:

以上是关于如何在 PHP 中运行 ffmpeg 命令的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中从命令行运行ffmpeg

php exec ffmpeg 如何获取错误

如何解决php执行exec函数ffmpeg命令不生效的问题

如何在 GPU(AMD)中运行 ffmpeg

如何使用 ffmpeg/php 在按钮单击时将 mp4 文件转换为 mp3?

如何使用swift从Xcode coco app运行像FFMPEG这样的终端程序?