我有这个应用程序,需要将视频文件转换为 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!成功了!:)
我希望它也适合你。