FFMPEG works on Console but doesn't work in PHP script on Ubuntu

I have this aplication where I need to convert video files to MP4 and then compress it. I'm trying to use FFMPEG to get this to work. Tried the command lines in the console and it works great

Converting

ffmpeg -i teste.avi teste.mp4

Compressing

ffmpeg -i teste.mp4 -acodec mp2 teste.mp4

But when I do the same within a PHP script, it starts yelling that something called GLIBCXX is not installed. This is the error:

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)

This is my script

$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

I'm running the script on Ubuntu

@edit Я могу запустить, например, shell_exec ('ls')

0
задан 17 November 2015 в 20:04
2 ответа

У вас запущен сервер XAMPP, поэтому все на нем работает с библиотеками, которые идут с ним. Проблема в том, что теперь вы пытаетесь запустить программу, которая использует системные библиотеки и в среде, которая была настроена для использования определенной другой библиотеки. У вас есть два варианта:

  • Установить стек LAMP на ваш Ubuntu из репозитория. tasksel делает это проще простого. Таким образом, PHP будет работать в той же среде, что и ffmpeg.
  • Установка LD_LIBRARY_PATH глобальных значений внутри вашего PHP-скрипта везде, где вы собираетесь запускать ffmpeg. Эти значения можно узнать, запустив ldconfig -v | grep \ / .
1
ответ дан 4 December 2019 в 16:46

Чтобы исправить это, я зашел в / usr / lib, поискал libstdc ++ (в этом каталоге есть более новые версии) и скопировал его в / opt / lampp / lib.

Я сделал резервную копию исходного файла и вставил новый файл и БУМ! Это сработало! :)

Надеюсь, у вас тоже получится.

0
ответ дан 4 December 2019 в 16:46

Теги

Похожие вопросы