Instalar ffmpeg-php en Ubuntu 8.10 Intrepid Ibex

Escribo este artículo para aquellos que llegan aquí buscando como instalar ffmpeg con soporte para php5 mediante la extensión ffmpeg-php en Ubuntu 8.10. Si eres una visita ’standard’ de este sitio, probablemente no estes interesado en este pequeño artículo.

Si has intentado instalar ffmpeg-php a mano, esto es compilándolo, te habrá devuelto un mensaje informándote que para compilar ffmpeg-php previamente debes compilar ffmpeg con el flag —-enable-shared. Yo como soy obediente lo hice, compilé ffmpeg con –enabled-shared para poder instalar la extensión php.

¿Qué pasó? Pues que fue un fracaso. Al ejecutar ffmpeg devolvía un error con la librería libavcodec y evidentemente así no podía instalar mi querido ffmpeg-php, ni siquiera utilizar ffmpeg en consola.

ffmpeg: symbol lookup error: /usr/local/lib/libavcodec.so.52: undefined symbol: av_lfg_init

Probé instalando ffmpeg desde los repositorios de ubuntu con la herramienta apt-get, pero no me valía porque esa compilación no tiene el flag –enabled-shared, necesario para la posterior compilación de la extensión.

Después de días compilando de mil y una maneras diferentes el jodido ffmpeg, instale una vez más la versión que se encuentra en los repositorios, de calle que no iba a valer para compilar la extensión, pero… y si ffmpeg-php estuviese en los repositorios. En efecto bajo el nombre del paquete php5-ffmpeg se encontraba la odiada extensión de ffmpeg. Instalé este paquete y ¡bingo! Ffmpeg funcionaba instanciándolo en php.

Mientras me documentaba vía google, sobre el error de la librería libavcodec, me percaté que otros usuarios tenían el mismo problema que yo, así que para todos ellos aquí van los sencillos pasos que me hubiesen ahorrado unas buenas horas delante del PC. Sobra decir que antes de esto debes tener instalado apache2 y php5.

$ sudo su
# apt-get install lame
# apt-get install ffmpeg
# install php5-ffmpeg
# /etc/init.d/apache2 restart
# chmod -R 777 /var/www/video/

Es necesario cambiar los permisos(chmod) de la carpeta donde tengamos los vídeos si vamos a convertir vídeos desde php.

Y para finalizar, un ejemplo usando la clase que proporciona ffmpeg-php para extraer información de lo videos. Fíjate que para convertir videos es necesario llamar a ffmpeg mediante exec().

PHP:

  1. <?php
  2. //Obtenemos información del vídeo
  3. $ffmpegInstance = new ffmpeg_movie(‘joaquin.avi’);
  4. echo “getDuration: “ . $ffmpegInstance->getDuration() .
  5. “<br/>getFrameCount: “ . $ffmpegInstance->getFrameCount() .
  6. “<br/>getFrameRate: “ . $ffmpegInstance->getFrameRate() .
  7. “<br/>getFilename: “ . $ffmpegInstance->getFilename() .
  8. “<br/>getComment: “ . $ffmpegInstance->getComment() .
  9. “<br/>getTitle: “ . $ffmpegInstance->getTitle() .
  10. “<br/>getAuthor: “ . $ffmpegInstance->getAuthor() .
  11. “<br/>getCopyright: “ . $ffmpegInstance->getCopyright() .
  12. “<br/>getArtist: “ . $ffmpegInstance->getArtist() .
  13. “<br/>getGenre: “ . $ffmpegInstance->getGenre() .
  14. “<br/>getTrackNumber: “ . $ffmpegInstance->getTrackNumber() .
  15. “<br/>getYear: “ . $ffmpegInstance->getYear() .
  16. “<br/>getFrameHeight: “ . $ffmpegInstance->getFrameHeight() .
  17. “<br/>getFrameWidth: “ . $ffmpegInstance->getFrameWidth() .
  18. “<br/>getPixelFormat: “ . $ffmpegInstance->getPixelFormat() .
  19. “<br/>getBitRate: “ . $ffmpegInstance->getBitRate() .
  20. “<br/>getVideoBitRate: “ . $ffmpegInstance->getVideoBitRate() .
  21. “<br/>getAudioBitRate: “ . $ffmpegInstance->getAudioBitRate() .
  22. “<br/>getAudioSampleRate: “ . $ffmpegInstance->getAudioSampleRate() .
  23. “<br/>getVideoCodec: “ . $ffmpegInstance->getVideoCodec() .
  24. “<br/>getAudioCodec: “ . $ffmpegInstance->getAudioCodec() .
  25. “<br/>getAudioChannels: “ . $ffmpegInstance->getAudioChannels() .
  26. “<br/>hasAudio: “ . $ffmpegInstance->hasAudio();
  27.  
  28.  
  29. //conversión de un vídeo avi en flash video
  30. exec(‘ffmpeg -i video.avi ./video/video_convertido.flv’)?>

Leave a Reply