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