ошибка ffmpeg MAMP "dyld: Библиотека не загружена"


Я использую ffmpeg на Mac OSX 10.7.3 в MAMP с помощью команды PHP exec(), у меня есть абсолютный путь, установленный для вызова 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);
Author: benedict_w, 2012-04-11

3 answers

Проблема в том, что путь DYLD_LIBRARY_PATH задан в MAMP, и я установил ffmpeg через macports.

Возможно, это не лучшее решение, но на данный момент оно меня поддерживает и работает:

В файле /Applications/MAMP/Library/bin/envvars и прокомментируйте следующие строки, как показано ниже:

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

И перезапустить Apache

 30
Author: benedict_w, 2012-04-12 14:22:28

Комментирование строки #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
Author: beth, 2013-10-09 15:52:51

Убедитесь, что PHP exec использует ту же оболочку, что и вы, когда вы используете командную строку.

Вероятно shell_exec Документы помогает.

Смотрите такжеphp shell_Exec не работает, пока команда работает в оболочке.

 0
Author: hakre, 2017-05-23 12:29:57