Ir al contenido

Recommended Posts

VGe8PrD.png

 

Recientemente me he encontrado con un dilema que ha requerido de una solución un poco creativa y es que, para mi desgracia, me he visto forzado a participar en varias videoconferencias.

El problema surge por todo lo que eso implica, es decir, la necesidad de contar con micrófono, webcam, no poder contestar en pelota picada y sin duchar... digo... bueno, creo que me entienden.

 

Entre las opciones que barajaba estaban coger la cámara y el micro más baratos posibles, casi que de usar y tirar, para pasar el mal trago y ya está. Resucitar el viejo portátil que los lleva integrados y pasar un rato incómodo y sufriendo en una pantalla de tamaño reducido y un hardware que ha tenido épocas mejores, conectarme directamente a través del teléfono y sufrir aún más con limitaciones aún peores, o... ¿Por qué no hacer algo intermedio, aprovechando la cámara y el micrófono integrados del teléfono como medio para llevar a cabo la videoconferencia a través del equipo de escritorio?

 

Para llevar a cabo esta tarea existen diferentes herramientas, pero en mi caso me voy a centrar en dos, una que hará de servidor en el teléfono y otra que nos permita conectarnos desde nuestra distribución GNU/Linux.

 

Para el primer propósito he elegido IP Webcam, que como su nombre indica, nos permitirá conectarnos al teléfono y utilizarlo como webcam simplemente conociendo su IP (y el puerto por el que escucha)

Existe también a posibilidad de ir más allá y conectarnos desde fuera de nuestra red local, en plan cámara de vigilancia, pero eso se sale del objetivo que tenemos ahora entre manos.

Por último, y si queremos obtener un resultado aún mejor, podemos habilitar la depuración USB en nuestro teléfono y en lugar de conectarnos a él a través de la red LAN, hacerlo directamente por cable valiéndonos de ADB

 

El primer paso, evidentemente, es instalar IP Webcam en el teléfono e iniciar el servidor.

 

 

Como ven no hay ningún misterios, es ir a la Play Store, buscarla, instalarla, ejecutarla e iniciar el servidor.

Podemos afinarla mucho más con el enorme abanico de opciones que nos ofrece, pero incluso dejando la configuración por defecto, el resultado será bastante aceptable, no haría falta cambiar nada.

 

Como podemos apreciar al iniciar el servidor, aparece en la pantalla la dirección IP y el puerto al que debemos conectarnos para acceder a la "webcam"

Cosa que podemos hacer desde cualquier navegador web:

 

QESsJh4.jpg4o3njug.jpg

 

Aunque esto pueda resultar práctico para ver y escuchar lo que se encuentra en las inmediaciones del teléfono, conectándonos desde la red local o configurarlo para conectarnos desde el exterior (en ese caso configuraríamos un usuario y contraseña en las opciones de IP Webcam), nos sigue faltando el lado que atañe al equipo de escritorio, para poder utilizar esta conexión como si se tratara de una webcam conectada físicamente al equipo.

 

Una vez más existen multitud de opciones, pero en nuestro caso seguiré en la misma línea de trabajo y me valdré del script de conexión ipwebcam-gst

 

El script es bastante completo y es capaz incluso de descargar sobre la marcha los paquetes y dependencias necesarias para poder llevar a cabo la función de puente con la cámara y el micrófono del teléfono, pero de manera general, los requisitos serán:

  • Zenity, para poder mostrar los mensajes del asistente
  • El módulo v4l2loopback para la conexión de vídeo
  • Y gstreamer-XX-pulseadio y gstreamer-xx-tools (donde XX será la versión, generalmente 1.0) para el sonido

 

Para los debianeros

aptitude install zenity gstreamer-1.0-{tools,pulseaudio} v4l2loopback-dkms

 

Cumplidas las dependencias, lo siguiente que tenemos que hacer es clonar el repositorio de github

git clone https://github.com/bluezio/ipwebcam-gst

O, si nos encontramos en Arch Linux, podemos tirar de AUR

yaourt -S ipwebcam-gst-git

 

Y vamos a editar el script prepare-videochat.sh, centrándonos en dos apartados:

 

La dirección IP y el puerto, que estarán fijados con un valor por defecto que no van a coincidir con los de nuestro teléfono

 

Cita

# IP used by the phone in your wireless network

WIFI_IP=192.168.2.140

 

# Port on which IP Webcam is listening

PORT=8080

 

El puerto va s ser siempre 8080, así que salvo que sea nuestra intención cambiarlo o no aparezca así en el script, lo dejamos tal cual, pero la IP, evidentemente, tenemos que hacerla coincidir con la que aparece en el servidor de IP webcam en el teléfono, en mi caso de ejemplo 192.168.1.60

 

Cita

# IP used by the phone in your wireless network

WIFI_IP=192.168.1.60

 

# Port on which IP Webcam is listening

PORT=8080

 

Y la versión de Gstreamer en el caso de distribuciones basadas en Debian, ya que seguramente estemos utilizando gstreamer 1.0, pero en el script esté fijada la versión 0.10 y nos genere un conflicto

 

Cita

GST_VER="0.10"
GST_VIDEO_CONVERTER="ffmpegcolorspace"
GST_VIDEO_MIMETYPE="video/x-raw-yuv"
GST_VIDEO_FORMAT="format=(fourcc)YUY2"

GST_AUDIO_MIMETYPE="audio/x-raw-int"
GST_AUDIO_FORMAT="width=16,depth=16,endianness=1234,signed=true"
GST_AUDIO_RATE="rate=44100"
GST_AUDIO_CHANNELS="channels=1"
GST_AUDIO_LAYOUT=""

GST_1_0_AUDIO_FORMAT="format=S16LE"
GST_0_10_VIDEO_MIMETYPE=$GST_VIDEO_MIMETYPE
GST_0_10_VIDEO_FORMAT=$GST_VIDEO_FORMAT

 

 

Cita

GST_VER="1.0"
GST_VIDEO_CONVERTER="ffmpegcolorspace"
GST_VIDEO_MIMETYPE="video/x-raw-yuv"
GST_VIDEO_FORMAT="format=(fourcc)YUY2"

GST_AUDIO_MIMETYPE="audio/x-raw-int"
GST_AUDIO_FORMAT="width=16,depth=16,endianness=1234,signed=true"
GST_AUDIO_RATE="rate=44100"
GST_AUDIO_CHANNELS="channels=1"
GST_AUDIO_LAYOUT=""

GST_1_0_AUDIO_FORMAT="format=S16LE"
GST_0_10_VIDEO_MIMETYPE=$GST_VIDEO_MIMETYPE
GST_0_10_VIDEO_FORMAT=$GST_VIDEO_FORMAT

 

 

Con esto modificado ya sólo nos quedaría lanzar el script y seguir las instrucciones (puede requerir permisos de root para instalar paquetes y cargar algún módulo)

./prepare-videochat.sh

 

Como vemos el primer mensaje nos aclara lo que mencioné antes sobre ADB. SI queremos, podemos conectarnos directamente por cable habilitando la depuración USB en el teléfono también.

No cambiaría nada en el proceso que sigue a continuación. Si el teléfono está conectado por cable USB y ADB puede conectar se hará la conexión directa. Y si no, será a través de la IP que hemos definido antes.

 

39Km9vb.jpg?1

 

Independientemente de la opción que elijamos, el script quedará corriendo en segundo plano con el teléfono enlazado como webcam improvisada, que podremos utilizar con cualquier servicio o aplicación que queramos.

 

 

TDTxqf3.jpg

Compartir este post


Enlace al post
Compartir en otros sitios

Por poder, se puede, pero me parece mucho trabajo si luego no vamos a usar la cámara para nada.

Para utilizar sólo el micro lo enfocaría de una manera más simple. Por ejemplo:

 

Servidor de micrófono para el teléfono

https://play.google.com/store/apps/details?id=com.wo.voice&hl=es

 

Y cliente de conexión para el equipo

http://www.wirelessorange.com/womic/#div_download

 

Más o menos el mismo proceso que con el otro

 

Cargar el módulo de audio

modprobe snd-aloop

Wifi

micclient-ubuntu-x86 -t Wifi 192.168.1.100

Bluetooth

micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx

O habilitando la depuración USB y usando ADB.

 

 

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión

×