FFMPEG 在控制台上运行,但在 Ubuntu 上的 PHP 脚本中不起作用

FFMPEG 在控制台上运行,但在 Ubuntu 上的 PHP 脚本中不起作用

我有这个应用程序,需要将视频文件转换为 MP4,然后压缩它。我正在尝试使用 FFMPEG 来实现它。尝试了控制台中的命令行,效果很好

转换

ffmpeg -i teste.avi teste.mp4

压缩

ffmpeg -i teste.mp4 -acodec mp2 teste.mp4

但是当我在 PHP 脚本中执行相同操作时,它开始大喊GLIBCXX未安装某个名为的东西。这是错误:

ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/i386-linux-gnu/libjack.so.0)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/i386-linux-gnu/libjack.so.0)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/i386-linux-gnu/libjack.so.0)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/i386-linux-gnu/libzmq.so.3)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/i386-linux-gnu/libzmq.so.3)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/i386-linux-gnu/libopencv_core.so.2.4)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/i386-linux-gnu/libopencv_core.so.2.4)
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/i386-linux-gnu/libopencv_core.so.2.4)

这是我的脚本

$r = shell_exec("ffmpeg -i $file_path $output_path 2>&1"); //convert
$r = shell_exec("ffmpeg -i $file_path -acodec mp2 $file_path 2>&1"); //compress

我在 Ubuntu 上运行该脚本

@编辑 例如,我可以运行 shell_exec('ls')

答案1

您正在运行 XAMPP 服务器,因此其中的所有内容都使用随附的库运行。问题是,现在您尝试运行使用系统库的程序,并且环境已设置为使用特定的其他库。您有两个选择:

  • 从存储库在您的 Ubuntu 机器上安装 LAMP 堆栈。tasksel这非常容易。这样 PHP 将在 ffmpeg 运行的相同环境中运行。
  • LD_LIBRARY_PATH无论您要在哪里运行 ffmpeg,都可以将 设置为 PHP 脚本中的全局值。运行 即可找到这些值ldconfig -v | grep \/

答案2

为了解决这个问题,我去了 /usr/lib 并搜索 libstdc++(此目录有较新的版本)并将其复制到 /opt/lampp/lib。

我备份了原始文件并粘贴了新文件,然后 BOOM!成功了!:)

我希望它也适合你。

相关内容