Escribí un programa php que crea un video a partir de una secuencia de imágenes usando ffmpeg.
<?php $res = shell_exec("ffmpeg -framerate 50 -i image/image%d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4 2>&1"); echo "$res";Cuando lo ejecuto,
dice GLIBCXX_3.4.15 , GLIBCXX_3.4.9 , GLIBCXX_3.4.11 no encontrado .
ffmpeg: /opt/lampp/lib/libstdc++.so.6: versión `GLIBCXX_3.4.15' no
encontrado (requerido por /usr/lib/i386-linux-gnu/libjack.so.0) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: versión `GLIBCXX_3.4.9' no encontrada
(requerido por /usr/lib/i386-linux-gnu/libzmq.so.3) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: versión `GLIBCXX_3.4.11' no encontrada
(requerido por /usr/lib/i386-linux-gnu/libopencv_core.so.2.4) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: versión `GLIBCXX_3.4.9' no encontrada
(requerido por /usr/lib/i386-linux-gnu/libopencv_core.so.2.4)
Pero desde la terminal, el ffmpeg -framerate 50 -i image/image%d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4 funciona bien. ¿Por qué php no puede encontrar las bibliotecas mientras que desde la terminal funciona bien? y que debo hacer para solucionar el problema en php? Gracias por adelantado.
También tuve un problema similar al ejecutar el comando ffmpeg desde el script PHP. Encontré la solución ejecutando el siguiente comando desde la terminal. Estoy pegando ese comando aquí para que alguien obtenga ayuda de esto.
sudo mv /opt/lampp/lib/libstdc++.so.6 /opt/lampp/lib/libstdc++.so.6.origAhora simplemente ejecute su script php, espero que funcione.
Si ha probado todos los métodos anteriores (cambie el nombre a .orig/_old, copie la versión más nueva en la carpeta lib, cambie LD_LIBRARY_PATH en xampp),
pero aún no pudo resolver este problema. Prueba este truco que funcionó para mí finalmente:
1. agregue la siguiente línea en su archivo PHP.
var_dump(shell_exec("whoami"));puede encontrar el nombre de usuario en su navegador después de hacer clic en la URL relacionada con su archivo PHP
2.en tu terminal
sudo vim /ect/sudoers #in vim editor, add this line in your sudoers file "username ALL=(ALL) NOPASSWD:ALL" #change username to that found in step one3. cambie el exec cmd en su archivo PHP a
exec("sudo python3 urfilename.py")La razón principal de su problema puede ser el permiso de root, por lo que al cambiar su archivo sudoers, el error podría solucionarse.