Retransmisión en tiempo real con la cámara de la Raspberry Pi

En el anterior artículo hablaba de cómo hacer un robot con el que se pueda hacer vigilancias o inspecciones. El problema que tenía era que la cámara no mostraba las imágenes en tiempo real.

Aprovechando que la fundación Raspberry Pi ha sacado a la venta la nueva cámara que se acopla al dispositivo a través de su propio puerto, he adquirido una para hacer pruebas con ella y ver si era capaz de conseguir la ansiada retransmisión (o streaming) en directo.

IMGP3104

Después de varias pruebas con vlc y el protocolo rtsp sólo había conseguido un flujo de imágenes con un retraso de 1 o 2 segundos, pero esto era insuficiente. Por suerte me encontré con este artículo que hablaba de hacerlo con netcat y mplayer. Configurando bien los parámetros se puede tener una secuencia de vídeo muy fluida, o lo que es lo mismo, streaming en tiempo real.

Primero desde el ordenador (ya sea linux, Mac OS o Windows -con este netcat-) ejecuto el siguiente comando:

Mac OS

Linux y Windows:

Es significado es que netcat escucha por el puerto 5001 y todo lo que reciba se lo pasará al mplayer por la entrada estándar. MPlayer espera una retransmisión de 60 marcos por segundo y guardará el contenido en un buffer de un mega.

Después desde la Raspberry Pi con el sistema operativo Raspbian ejecuto el siguiente comando:

El programa raspivid envía durante 1000 segundos una imágen de 640×480 píxeles volteada horizontal y verticalmente por la salida estándar y sin mostrar la previsualización. El netcat lo envía a la ip 192.168.1.37 por el puerto 5001.

El resultado es este:

Tanto el ordenador como la Raspberry PI están conectados al router y funciona bastante bien, pero para hacerlo mejor lo ideal sería conectar ambos por wifi mediante ad-hoc.

7 pensamientos en “Retransmisión en tiempo real con la cámara de la Raspberry Pi

  1. Stevenmn

    Muy buen proyecto.Te queria preguntar algo, si conoces alguna forma de transmitir video, pero no enviandolo al pc sino a un celular android(una app) ?.Gracias

    Responder
      1. Stevenmn

        Gracias por responder. Lo que pasa es que estoy construyendo un hexapodo y quiero que tenga una camara y estoy haciendo una app para controlar su movimiento(por bluetooth), pero lo que queria era dentro de la misma app poder ver video en tiempo real. No he visto nada asi y en realidad no se si se pueda.

        Me gustaria una opinion tuya , y gracias.

        Responder
        1. admin Autor

          Casualmente yo también intenté algo así, pero no lo he logrado todavía. En el artículo envío la salida de mplayer por netcat. En Android habría que programar un socket que fuese servidor y que recuperase el stream enviado y lo procesase mediante la librería MediaCodec. Este es un buen sitio para empezar http://bigflake.com/mediacodec/

          Responder
          1. Stevenmn

            Oh que bien!, bueno, pues te cuento, despues de mucha investigacion en ingles(principalmente) veo que es imposible o totalmente impractico enviar video por bluetooth debido a su velocidad.

            Por ahora lo que pense, fue entonces en wifi, conseguir una camara y con raspberry montar un server(verla por ip localmente) y pues en mi app de android para controlar el hexapodo , crear un boton que me abra el browser con el streaming de la camara.

  2. carlos lozano

    hola que tal oye disculpa, la raspberry la puedes utilizar para hacer todo ese proceso pero sin utilizar la pc, mejor dicho, despues del proceso de configuración, todo ese trabajo se puede realizar con la raspberry desconectada de la pc. gracias

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *