ffmpeg MAMP“dyld:Library not loaded”错误

时间:2012-04-11 14:11:24

标签: php macos ffmpeg

我在MAMP中通过PHP的exec()命令在Mac OSX 10.7.3上使用ffmpeg,我有一个绝对路径设置来调用ffmpeg,例如。

/opt/local/bin/ffmpeg -i "/sample.avi"

但是我收到以下错误 -

dyld: Library not loaded: /opt/local/lib/libjpeg.8.dylib  Referenced from: /opt/local/lib/libopenjpeg.1.dylib  Reason: Incompatible library version: libopenjpeg.1.dylib requires version 13.0.0 or later, but libJPEG.dylib provides version 12.0.0

N.B。 ffmpeg是通过Macports安装的。

它可以从命令行运行。

怎么办?

修改

我重新打开了这个 - 最初认为shell_exec()解决了这个问题,但事实上它应该被称为不同 - 我直到今天进一步调查才意识到。这是我的代码使用shell_exec并仍然给出上面的错误:

 $cmd = '/opt/local/bin/ffmpeg -h';
 $cmd = escapeshellcmd($cmd) . ' 2>&1';
 $output = shell_exec($cmd);
 var_dump($output);

3 个答案:

答案 0 :(得分:30)

问题是在MAMP中设置了DYLD_LIBRARY_PATH,我已经通过macport安装了ffmpeg。

这可能不是最好的解决办法,但它让我现在正在运行:

/Applications/MAMP/Library/bin/envvars文件中,注释以下行:

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH

并重启Apache

答案 1 :(得分:2)

注释掉行#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"将在短期内起作用,但它可能会破坏其他内容,因为您正在删除MAMP用来告诉服务器保留其库的位置的行。

更好的解决方案是将行更改为:

DYLD_LIBRARY_PATH="/usr/local/lib:/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"

这样您就可以将/usr/local/lib:添加到已经给定的路径中。这告诉Apache首先查看/usr/local/lib,然后如果这不起作用,则查看/Applications/MAMP/Library/lib

因此,如果您通过Brew安装了一些东西,并且有两个版本,那么它将首先使用Brew安装的那个版本,然后再使用MAMP附带的任何版本,这更有可能是过时的。但如果它只是MAMP附带的东西,你没有单独安装或者是特定于MAMP的,那么你就不会破坏它。

答案 2 :(得分:0)

使用命令行时,确保PHP的exec使用与您相同的shell。

可能shell_exec­Docs有帮助。

另见php shell_Exec not working while the command works in shell