Codificador de capturadora HDMI para visualizarla en Alexa echo show y dispositivos móviles

This article can be read in english here

Este proyecto, que es doble, por un lado involucra 2 skills diferentes de Alexa, que he llamado «control de pantalla» y «la pantalla», una de las cuales está alojada en los propios servidores de Amazon, escrita en node.js y la otra, escrita en python está alojada en mi raspberry pi.

Por otro lado, involucra un bot de telegram, escrito en python, alojado en mi raspberry pi.

Echando un vistazo a la parte de cableado tuve que comprar un divisor de HDMI como éste:

https://es.aliexpress.com/item/1005001577128634.htm

Y una capturadora HDMI como ésta :

https://es.aliexpress.com/item/1005004990708725.html

De esta manera es posible conectar un decodificador de TV tanto a la TV como a la capturadora HDMI

El código de la skill «la pantalla» puede observarse aquí y simplemente ante la orden : «Alexa abre la pantalla» abre un reproductor de video apuntando a la URL especificada. Como nota, es CRÍTICO que dicha URL sea HTTPS , esto se consigue mediante una configuración de nginx adecuada, un nombre dinámico DDNS y Letsencrypt para firmar los certificados necesarios.

La skill «control de pantalla» en cambio, hace uso de una API basada en HTTP , similar a la que se usó en este proyecto para controlar lo que dicho codificador está reproduciendo y mediante la voz, cambiar el canal al deseado.

Por otro lado, ejecuta el comando:

ffmpeg -f video4linux2 -input_format yuyv422 -s 1280x720 -i /dev/video2 -f alsa -i plughw:CARD=UHD,DEV=0 -vcodec h264_omx -b:v 2M -c:a aac -b:a 64k -f mpegts -loglevel error -filter:v fps=30 - | /usr/bin/vlc -I dummy - --sout "#duplicate{dst=std{access=http,mux=mkv,dst=:8950/stream}}"

Para codificar el video capturado en un codec y resolución aptos para el Alexa echo show en la url 127.0.0.1:8950/stream, por último nginx convierte esa URL de loopback en una URL pública bajo HTTPS.

El bot de telegram se utiliza para ofrecer una interacción cómoda, también haciendo uso de la API HTTP para controlar lo que el codificador está reproduciendo y ofreciendo 3 calidades diferentes de vídeo para elegir la adecuada al consumo de datos que se desee o el ancho de banda que se disponga en ese momento.

3 Comentarios

Deja una respuesta

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