El estudio de Video en Casa: StreamDeck en Linux Ubuntu 24.04
En esta entrada actualizamos un post que teníamos anteriormente para la instalación y el uso de la StreamDeck en máquinas Linux, pero esta vez actualizado para la Ubuntu 24.04. Aunque sea sólo para que la gente sepa que se puede usar en Linux para ejecutar comandos de manera sencilla usando estos interfaces de El Gato.
![Streamdeck UI Usage Example](https://github.com/timothycrosley/streamdeck-ui/raw/master/art/example.gif)
¿Cómo lo instalo?
El repositorio principal de la aplicación es: https://github.com/timothycrosley/streamdeck-ui/
Para realizar la instalación debemos realizar los siguientes pasos
sudo apt install -y libhidapi-libusb0 python3-pip
Después deberás añadir esta línea al .bashrc o el fichero que uses para tu shell
PATH=$PATH:$HOME/.local/bin
Asegurate que lo tienes cargado ejecutando
source .bashrc
Instalando Conda para manejar los entornos de Python
Como debemos ejecutar el streamdeck y es una aplicación Python es una buena práctica instalar un gestor de entornos python y crear un entorno específico para el streamdeck-ui
Lo primero será meter la clave del GPG del repositorio deb de conda
# Install our public GPG key to trusted store
curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | gpg --dearmor > conda.gpg
sudo install -o root -g root -m 644 conda.gpg /usr/share/keyrings/conda-archive-keyring.gpg
# Check whether fingerprint is correct (will output an error message otherwise)
gpg --keyring /usr/share/keyrings/conda-archive-keyring.gpg \
--no-default-keyring --fingerprint 34161F5BF5EB1D4BFBBB8F0A8AEB4F8B29D82806
# Add our Debian repo
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/conda-archive-keyring.gpg] \
https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" \
> sudo tee -a /etc/apt/sources.list.d/conda.list
El siguiente paso es instalar el paquete de conda
sudo apt update
sudo apt install -y conda
El siguiente paso es añadir al fichero .bashrc la siguiente línea
source /opt/conda/etc/profile.d/conda.sh
Ejecuta el mismo comando para poder ejecutar los comandos de conda desde esta misma sesión de la terminal
Ahora si ejecutas el comando conda -V deberías ver la versión del comando
$ conda -V
conda 24.3.0
Creando un entorno Python para StreamDeck UI
Con conda ya instalado podemos crear un entorno de Python específico para Stream Deck UI con el comando:
conda create -n streamdeck python=3.9
Con este comando habremos creado un nuevo entorno conda para Python 3.9 llamado streamdeck, esposible que nos pida confirmación para la instalación pulsaremos y y enter
Si queremos activar el entorno deberemos ejecutar
conda activate streamdeck
Si en algún momento queremos borrar el entorno ejecutaremos:
conda remove --name streamdeck --all
Instalación de dependencias python en el entorno conda
aqui va
# dentro del entorno streamdeck
conda install obsws_python dotenv
Configuración udev para la StreamDeck
si queremos que nos detecte la streamdeck cuando arranquemos el StreamDeck UI nuestra distribución Linux debemos modificar la carga de dispositivos USB para ello debemos crear un fichero de reglas para udev con el comando
sudo sh -c 'echo "SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"0fd9\", TAG+=\"uaccess\"" > /etc/udev/rules.d/70-streamdeck.rules'
Si queremos que se aplique en nuestra sesión de shell ejecutaremos esta vez
sudo udevadm trigger
Instalación de StreamDeck UI
Con el entorno de python ya configurado y teniendo la carga de dispositivos USB ya podemos instalar el streamdeck ui ejecutando
pip3 install streamdeck-ui --user
Esto debería instalar el ejecutable del streamdeck-ui que podemos arrancar ejecutando
# recuerda cargar el entorno con conda activate streamdeck
streamdeck
Con esto debería cargar el entorno gráfico de streamdeck ui
![](https://cursosdedesarrollo.com/wp-content/uploads/2024/05/2024-05-01_18-59.png)
El selector debería detectar el dispositivo que tenemos enganchado por usb y ya deberíamos poder configurar los botones.
Si queremos hacerlo de manera rápida, podemos cargalos desde fichero json.
Tengo un ejemplo de fichero json ya preconfigurado por si queréis echarle un vistazo en la url: https://github.com/pepesan/twitch-chat-service/blob/main/streamdeck_ui_export.json
Como puedes ver ya estaría configurado de base con varios botones, en mi caso la primera pantalla está rellenada entera con botones.
Si no ves los iconos de los botones en normal porque estoy usando unos botones por defecto gratuitos de nerdordie: https://nerdordie.com/product/streamos-free-key-icons/
Cada uno de los botones tiene asignado un comando a ejecutar cuando se pulsa para ello veamos un ejemplo del json que tenemos para un botón concreto
"0": {
"text": "Comienzo",
"command": "change_scene.sh scene \"Empezamos en breve\"",
"text_vertical_align": "middle-bottom",
"icon": "/home/pepesan/PycharmProjects/flask-twitch-socketio-chat/Baseline - Stream Deck Icons/Main/Scene 2 - On.png"
}
Como vemos en cada botón tenemos un texto y un icono, que se verán en el botón físico y virtual de la streamdeck, el text_vertical_align que dirá que debe estar centrado verticalmente el texto y comando
El comando es un fichero .sh del mismo repositorio: https://github.com/pepesan/twitch-chat-service/blob/main/change_scene.sh
Que es super sencillo:
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
fi
#conda info --envs >> /home/pepesan/salida-streamdeck.txt
eval "$(conda shell.bash hook)"
conda activate streamdeck
echo "$1" >> /home/pepesan/salida-streamdeck.txt
echo "$2" >> /home/pepesan/salida-streamdeck.txt
echo "$3" >> /home/pepesan/salida-streamdeck.txt
python3 /home/pepesan/PycharmProjects/flask-twitch-socketio-chat/obs-websocket-client.py "$1" "$2" "$3"
Como vemos lo único que hace es activar el entorno de conda llamado streamdeck que es el que hemos configurado anteriormente y ejecutar un script de python que lanza los comandos llamado obs-websocket-client.py
Veamos las dependencias de este fichero:
import sys
import obsws_python as obs
import os
from dotenv import load_dotenv
Como vemos hay un par de módulos de sistema, como son sys y os pero necesita un par de dependencias nuevas que son obsws-python y python-dotenv que deberemos instalar en el entorno streamdeck de conda
pip3 install obsws-python python-dotenv
Configuración del entorno websocket en OBS
Dentro del OBS deberíamos de configurar el entorno de acceso Websocket desde el menú Herramientas-> Ajustes del Servidor Websocket
![](https://cursosdedesarrollo.com/wp-content/uploads/2024/05/2024-05-01_20-31.png)
Como vemos debemos habilitar el checkbox Habilitar servidor Websocket para que arranque el servidor
En el apartado de Ajustes del servidor debemos configurar el puerto: 4455
Debemos habilitar la autenticación
Y en el campo Contraseña del servidor meter una contraseña
Finalmente pulsamos en aplicar y OK
Estos datos deberemos de meterlos en un fichero de configuración del repositorio que lance el fichero python, es decir, en la misma carpeta donde esté el fichero python crea un fichero llamado .env con el siguiente contenido
OBS_HOST=localhost
OBS_PORT=4455
OBS_PASSWORD=mipassword
No olvides comprobar que el puerto y la contraseña son los mismos que los que has puesto en OBS
Prueba del comando de shell
Si todo ha ido bien deberíamos de ser capaces de ejecutar el comando change_scene.sh, por ejemplo para cambiar de escena:
change_scene.sh scene "Empezamos en breve"
Por supuesto cambia el nombre de la escena por el nombre de la escena que tengas en OBS
Si todo ha ido bien debería de ejecutar el comando cambiar de escena
Cambiar el fichero json
Si cambiamos el fichero JSON para que tenga por defecto por ejemplo un cambio de escena en el comando
"0": {
"text": "Comienzo",
"command": "change_scene.sh scene \"Empezamos en breve\"",
"text_vertical_align": "middle-bottom",
"icon": "Scene 2 - On.png"
}
Lo único que nos faltaría sería cargar el json en nuestra streamdeck mediante el menú del stream deck ui File-> Import
Seleccionaremos el fichero json que hemos creado y pulsaremos en Open
Y por último lo único que nos faltaría sería probar si al pulsar el botón realiza el cambio de escena
Conclusiones
Si os dais cuenta es muy laborioso de hacer pero nos permite de una manera muy sencilla después usando la streamdeck realizar una producción audio visual con OBS pulsando botones.
Comments