Delirios de un Informático

Convertir cualquier formato a MP4 para PS3 con ffmpeg

Hace tiempo hablé de cómo convertir vídeos para reproducirlos en la PS3 usando Handbrake, pero el problema es que es terriblemente lento. Tras probar un par de combinaciones con ffmpeg pude comprobar que de convertir en tiempo real (30fps, se convierte en lo que dura el vídeo) de Handbrake pasaba a 2500fps con ffmpeg, lo que es una gigantesca mejora. El comando en cuestión es:

ffmpeg -i origen.mkv -vcodec copy -acodec copy -sameq destino.mp4

Esto basta para que la PS3 reproduzca sin problemas el vídeo, que en la mayoría de los casos que he tenido que usarlo era un MKV.

Streaming de una webcam con ffmpeg

Para controlar a este bicho mientras no estoy en casa, pensé en usar la webcam en streaming para poder conectarme desde cualquier lado con el móvil y ver qué está haciendo. Tras mirar varias alternativas, me decidí por ffmpeg por la cantidad de formatos en los que se puede emitir, además de ser relativamente fácil de configurar.

La emisión se basa en dos ejecutables: ffserver y ffmpeg. El primero se ejecuta en modo escucha y se encarga de hacer el streaming real mientras que el segundo le envía la imagen al primero.

Para empezar, es necesario crear un archivo de configuración tomando como base /etc/ffserver.conf, dejándolo como sigue:

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -

<Feed webcam.ffm>
	File /tmp/webcam.ffm
	FileMaxSize 5M
</Feed>

<Stream webcam.swf>
	Feed webcam.ffm
	Format swf
	VideoBitRate 320
	VideoFrameRate 15
	VideoSize 640x480
	NoAudio
	VideoQMin 1
	VideoQMax 3
</Stream>

<Stream stat.html>
	Format status
</Stream>

<Redirect index.html>
	URL http://www.ffmpeg.org/
</Redirect>

Una vez configurado, es necesario lanzar el servidor con el comando:

ffserver -f ffserver.conf

Ahora sólo quedaría enviar la imagen al servidor con el comando ffmpeg y se puede utilizar cualquier entrada para redireccionarla al servidor. Por ejemplo, en el caso de una webcam, una capturadora de TV o cualquier entrada de vídeo, el comando sería:

ffmpeg -r 15 -s 320x240 -f video4linux -i /dev/video0 http://localhost:8090/webcam.ffm

Con mi cámara web Logitech Quickcam Messenger y el driver gspca me encontré con este error:

[flv @ 0x97df6f0]rc buffer underflow
VIDIOCMCAPTURE: Invalid argument

Que pude solucionar añadiendo lo siguiente antes del comando ffmpeg:

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

Si todo va bien, podremos ver la imagen emitida con el navegador, ya que creará un objeto Flash automáticamente :).

Convertir vídeos a MP4 para Symbian con ffmpeg

Como siempre, la mayoría de software de Nokia está sólo disponible para Windows o como mucho para Mac OS X (lo único que hacen multiplataforma es algún kit de desarrollo), y con su software de conversión de vídeo no iban a ser menos. Pero como siempre, hay alternativas libres y en este caso la mejor alternativa es ffmpeg, un potentísimo conversor de vídeo y audio multiplataforma.

La idea es convertir cualquier vídeo para que un teléfono Symbian sin software extra pueda reproducirlo, manteniendo una calidad decente. Como estos teléfonos integran un reproductor RealPlayer que reproducen el formato MP4, podremos convertir cualquier vídeo en formato 16:9 para Nokia 5800 con el siguiente comando:

ffmpeg -i video.flv -f mp4 -vcodec mpeg4 -b 256000 -r 15 -s 640x360
         -acodec libfaac -ar 48000 -ab 128 -ac 2 video.mp4

Para un Nokia con pantalla 320×240 se usaría:

ffmpeg -i video.flv -f mp4 -vcodec mpeg4 -b 256000 -r 15 -s 320x240
         -acodec libfaac -ar 48000 -ab 128 -ac 2 video.mp4

Luego sólo queda transferir el vídeo al teléfono via USB o Bluetooth y listo :).