Después de hacer varios tests con la ESP32 CAM, decidí probar la Raspberry Pi Zero W. Aunque este cambio implica una inversión más elevada en el proyecto, me parece que gano estabilidad en la transmisión, así como mejor control general, y facilidad de acceso los I/O’s. También me ha parecido un buen reto, ya que es la primera vez que trabajo con Raspberry y así también me puedo introducir a Python.
Hice algunas pruebas y encontré que emitir con Youtube era una opción bastante óptima para el proyecto. Actualmente Youtube Studio permite hacer varios canales de videostream simultáneos, luego la idea es recuperar los videos en la web de la performance.
Así pues y con la intensión de crear un pequeño manual introductorio a la Raspberry Pi Zero, comparto la información y pasos básicos para quienes como yo, empiezan el mundo Raspberry Pi.
Acerca de la Raspberry Pi Zero W

La Raspberry Pi Zero W es un módulo SBC (Single Board Computer) cuya particularidad es su tamaño pequeño y bajo precio ( 15 Eur. ) considerando que es un ordenador muy pequeñito.
Características en cuanto a Hardware:
– Wifi & Bluetooth
-Salida mini HDMI
– 1 conector micro USB OTG OTG .
– 1 micro micro USB para entrada de voltaje de entre 5-5.25 V.
– 1 entrada para tarjeta microSD.
– 1 conector para cámara. Este conector es más pequeño que el tiene por default el módulo de Pi Camera, por lo que es indispensable conseguir el cable especial.
– GPIO (General purpose input-output). Pins de entradas y salidas digitales. (Just what I needed)
– Conectores adicionales “Tv” y Run”: Estos conectores permiten conectar un jack RCA a la Pi en lugar de la salida HDMI.
El tutorial que me fue de mucha ayuda fue el de “Sparkfun: Getting Started with the Raspberry Pi Zero Wireless“.
Instalación (For Dummies)
- Instalar Raspbian Lite en la SD desde el ordenador.
Esto es el sistema operativo basado en Linux. La versión lite no tiene interfaz gráfica, pesa menos, pero hay que hacer todo por terminal. (Cosa que hasta ahora me cuesta mucho, me pierdo aún en los directorios, pero es cuestión de práctica.)
En Windows: Usar el instalador “imager”
En MAC: Copiar el sistema operativo por terminal. Aquí todos los pasos y un tutorial en Youtube. - Una vez copiado el sistema operativo hay que crear un archivo vacío “ssh” y sin extensión. Yo lo creé desde el editor de texto Brackets. Este archivo permite acceder a la línea de comandos de la Raspberry desde otro ordenador de manera remota utilizando SSH ( Secure Shell).
- Para conectar la Raspberry a la red Wifi. Crear un archivo llamado “wpa_supplicant.conf” que contenga el siguiente código, cambiando la información de la red Wifi :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=<Insert 2 letter ISO 3166-1 country code here>
network={
ssid="<Name of your wireless LAN>"
psk="<Password for your wireless LAN>"
} - Colocar SD en la Raspberry y conectarla a la energía. A partir de aquí tanto la Pi como tu ordenador deberán estar en la misma red.
- Para acceder a la Pi desde el ordenador por SSH en terminal, utilizando la IP de la Pi:
ssh pi@ipdelaRaspberry
Pi es el nombre del usuario que se ha definido por default en la instalación, y la contraseña es “raspberry”.
- Update y upgrade de software.
En la terminal, introducir este código:sudo apt update
- Upgrade
sudo apt full-upgrade
Hasta aquí tienes todo listo para usar la Raspberry Pi Zero W. 👏🏽👏🏽👏🏽
Configurar la cámara
- Conectar la cámara.
En mi caso estoy utilizando la “Camera Module V 2” - Activar la cámara.
Mediante el comando: sudo raspi-config
Aparecerá una interfaz gráfica como esta:
– Seleccionar “Interfacing Options”, luego “P1 Camera Enable/Disable connection”, seleccionar “Yes”. Y al finalizar la activación tendríamos una pantalla como esta: - Instalar software para encoding de video.
Para ello usaremos “FFmpeg“, un framework que permite codificar archivos de video y audio.
Para ello pondremos el comando :sudo apt install ffmpeg
Crear una sala de streaming en Youtube
- Crear una emisión en Youtube Studio. Para ello hay que tener cuenta en Youtube evidentemente, y crear una emisión nueva. Si es la primera ve z que lo haces, Youtube tardará por única ocasión 24 horas en activar tu stream.
- Ir a Youtube y en el menú superior derecho dar click en “Go Live”.
- Se abrirá el estudio de Youtube Studio y aparecerá una ventana como esta:
Aquí pondrás título a tu emisión, e información sobre el tipo de contenido. Para este tipo de pruebas selecciono la opción “Private”. Dar click en “create stream”.
Una vez creada tu sala, accederás a los controles de Youtube Studio en una interfaz como esta: - Youtube Studio crea una clave de emisión (stream key) y que normalmente se usa en otros dispositivos para emitir en este canal. Por ejemplo, otro ordenador compartiendo pantalla desde un gestor de stream como OBS, o un dispositivo de video externo. Copiar esta calve, se usará en el siguiente apartado.
Emitir desde la Raspberry Pi Zero W
- Copiar, modificar y pegar el siguiente código en la terminal dentro de la Pi. Necesitarás añadir la clave de tu emisión.
raspivid -o - -t 0 -vf -hf -fps 30 -b 6000000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/CLAVE_DE_EMISIÓNAqu
2. Una vez que comience a ejecutarse el código , YouTube Studio deberá hace una previsualización del video recibido. Se verá algo así como esto:
3. Dar click en “Go Live” para dar inicio a la transmisión en directo desde la Raspberry Pi Zero W.
¡Listo! ¡ 🔴 Emitiendo en directo!
Aquí el listado de los segmentos del código con los que estaré probando en las siguientes semanas, con la idea de encontrar la mejor resolución y menos datos de subida en la red.
- -o – Escribe los datos de video de la cámara Pi en STDOUT y para salir por pipes en ffmpeg.
- -t 0 – Graba el video hasta que manualmente se detenga el programa.
- -vf -hf – Voltea la imagen horizontal y verticalmente
- -fps 30 – Poner los frames por segundo a 30.
- -b 6000000 – Límite de Bitrate. Youtube recomienda 400-600kbps.
- -re – le dice a ffmpeg que reduzca la velocidad de lectura de la entrada a la velocidad de los fotogramas nativa de entrada
- -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero and -acodec aac -ab 128k and -strict experimental – agrega un canal de audio ficticio lleno de cero datos (YouTube rechaza las transmisiones sin un canal de audio , ya me ha pasado)
- -g 50 – Añade un keyframe cada 50 frames.
- -f h264 and -f flv Le dice a ffmpeg que está recibiendo una entrada en h264 y que se debería salir en flv
- -w and -h Si no se usan en la raspvid se obtendrá la resolución HD completa de 1920×1080 transmitida
Haciendo / Por hacer:
1. Probar una emisión simultánea en Youtube con 6 dispositivos.
2. Evaluar opciones de internet inalámbrico para la performance: Mifi / Datos de subida y bajada necesarios para las seis emisiones simultáneas.
2. Leer mensajes desde la web live!
Update 30 de Junio
Durante el periodo de confinamiento estuve utilizando mucho Youtube Live y me encontré en un par de ocasiones con que la emisión se ve interrumpida ya que algún algoritmo de control de Youtube al ver un poco de “piel” piensa que el contenido es inapropiado y cancela la transmisión. De momento tengo ya todo mi sistema preparado para hacerlo funcionar con Youtube, pero iguamente estoy buscando opciones que me permitan emitir de manera independiente, sin pasar por otra plataforma.
Aquí un par de ejemplos que quiero probar:
https://www.youtube.com/watch?v=hXOJwsYx33c