[Jde-dev] Streaming de video en Android

Roberto Calvo rocapal en libresoft.es
Dom Feb 7 13:04:34 CET 2010


Buenas,

Para la funcionalidad que queremos meter en la aplicación de
"Surveillance" [1] es necesario poder realizar streaming o visualización
de la cámara o videos que tenemos almacenados.

Actualmente Android soporta reproducción y streaming de vídeos muy
concretos: 3gp y mpgv4. Detalles de todos los codecs que soporta Android
lo podéis ver en [2]. El hecho de que no reproduzca más no es por temas
de hardware, sino que no han portado aún las librerías correspondientes.
Por poder, puede reproducir divx sin problemas, y formatos de alta
definición (El Nexus One ya lo hace y el Motorola Droid graba en
resolución DVD).

Os comento varias maneras que veo y he probado para obtener esta
información en el móvil.

1. Usar varcolorserver como fuente de datos: He retocado el cliente para
que pida constantemente imágenes al servidor. Pero conseguimos una tasa
de como máximo 5 fps por segundo (entre red y proceso). Aunque para ver
lo que está pasando está muy bien :-) Con esto, ya tenemos visualización
a bajo FrameRate en tiempo real de las cámaras.

2. Convertir a formato 3GP: Casi cualquier fichero lo podemos convertir
para reproducir en el móvil, usando ffmpeg:

ffmpeg -i prueba_avi.avi -s qcif -vcodec h263 -acodec aac -ac 1 -ar 32000 -ab 128 -y prueba_avi.3gp

3. Gracias a VLC podemos poner un servidor de streaming al que puede
conectarse desde Android utilizando el protocolo RTSP:

# Streaming de un vídeo 3GP
vlc -vvv prueba_avi.3gp --sout '#rtp{dst=192.168.1.15,port=1234,sdp=rtsp://192.168.1.15:8080/test.sdp}'

# Streaming de un vídeo con otro formato (en este caso vlc hace la
recodificación):
vlc -vvv prueba_avi.avi -I dummy --sout "#transcode{vcodec=mp4v,acodec=aac}:rtp{dst=0.0.0.0,port=1234,sdp=rtsp://192.168.1.15:8080/test.sdp}"

He modificado el cliente, para añadir una nueva funcionalidad para que
pida vídeos bajo streaming utilizando RTSP, y va bastante bien, el audio
se escucha bien, y el vídeo va fluido a resoluciones de 320x240. Tanto
en 2 y 3, el problema es que hay que realizar una codificación previa
para poder mostrar el vídeo en el móvil.

También queda mirar el soporte que provee ICE para realizar streaming,
pero sabiendo que en Android o visualizas en 3GP o visualizas frame por
frame ... no sé hasta que punto vamos a poder aprovechar su potencia en
Android.

También es cuestión de tiempo (ya lo están haciendo), que porten un
cliente de vlc o mplayer a Android. Con lo que tienes toda la potencia
de estas herramientas ya más que trilladas en GNU/Linux.

un saludo!

[1] http://jderobot.org/index.php/Surveillance
[2] http://developer.android.com/guide/appendix/media-formats.html

-- 
Roberto Calvo Palomino          | Libre Software Engineering Lab (GSyC)
Tel: (+34) 91 488 85 23         | Universidad Rey Juan Carlos
rocapal en libresoft.es            | Edif. Departamental II - Despacho 116
http://libresoft.es/            | c/Tulipán s/n 28933 Móstoles (Madrid)

GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 198 bytes
Descripción: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada
 digitalmente
Url        : http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100207/b55aa7ef/attachment.pgp 


More information about the Jde-developers mailing list