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

我有这个应用程序,我需要将video文件转换为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上运行脚本

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

你正在运行一个XAMPP服务器,所以里面的所有东西都和它一起运行的库一起运行。 问题是现在你试图运行一个使用系统库的程序,并且已经设置了一个使用特定其他库的环境。 你有两个select:

  • 从库中安装LAMP栈到你的Ubuntu盒子上。 tasksel使这很轻松。 这样PHP将运行在相同的环境ffmpeg正在运行。
  • LD_LIBRARY_PATH设置为您要运行ffmpeg的PHP脚本中的全局值。 如果运行ldconfig -v | grep \/您可以find这些值 ldconfig -v | grep \/

我做了什么来解决这个问题是我去了/ usr / lib并searchlibstdc ++(这个目录有更新的版本),并将其复制到/ opt / lampp / lib。

我做了原始文件的备份并粘贴了新文件和BOOM! 有效! 🙂

我希望它也适用于你。