如何在PHP中运行ffmpeg命令

Pre*_*eeT 4 php ffmpeg command-line-interface

我需要在PHP中运行ffmpeg命令.

但php-ffmpeg不再支持最新版本和过时.

我可以知道在webfile中运行ffmpeg命令的替代方法(PHP,Javascript,jQuery).

我在PHP文件中尝试exec()shell_exec()获取空白输出.

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

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

slh*_*hck 7

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

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

然后你会看到输出.

  • 这里要注意2点:1)在2之前必须有一个空格,2)你必须使用双引号而不是单引号 (2认同)

小智 3

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

或者

使用Symfony Process,你可以使用composer安装:“symfony/process”:“~2.0”Symfony Process文档

或者

使用proc_open()函数。

FFMpeg\FFMpeg使用了Symfony Process并且Symfony Process使用了proc_open()函数:)

我更喜欢使用 Symfony Process:

require 'vendor/autoload.php';

use Symfony\Component\Process\Process;
$process = new Process('ls -lsa');
$process->run();
Run Code Online (Sandbox Code Playgroud)

  • 这完全是多余的,与OP的问题无关,这是一个简单的shell重定向问题。 (2认同)
  • 这不应该被否决。OP 确实要求从 PHP 脚本运行 ffmpeg 的替代方法,这就是答案。 (2认同)