У меня есть это приложение, в котором мне нужно преобразовать видео файлы в 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')
Вы используете сервер XAMPP, поэтому все внутри него работает с библиотеками, которые поставляются с ним. Проблема в том, что теперь вы пытаетесь запустить программу, которая использует системные библиотеки и в среде, которая была настроена для использования определенной другой библиотеки. У вас есть два варианта:
tasksel
делает это легким. Таким образом, PHP будет работать в той же среде, что и ffmpeg.LD_LIBRARY_PATH
к глобальным значениям внутри вашего PHP-скрипта везде, где вы собираетесь запускать ffmpeg. Вы можете найти эти значения, если запустите ldconfig -v | grep \/
.Чтобы исправить это, я зашел в / usr / lib, поискал libstdc ++ (в этом каталоге есть более новые версии) и скопировал его в / opt / lampp / lib.
Я сделал резервную копию исходного файла и вставил новый файл и БУМ! Это сработало! :)
Надеюсь, это сработает и для вас.