Skip to main content

📡 Instalación de GStreamer

Esta guía te ayudará a instalar GStreamer para recibir flujos de video y audio desde tu Reachy Mini. Consulta la arquitectura de medios para entender cómo se accede a los flujos local o remotamente según la configuración.

Los wheels de Python están disponibles para las plataformas Windows y macOS y se incluyen en las dependencias del proyecto. Todo debería funcionar directamente. Para usuarios de Linux, se requiere una instalación manual.

🐧 Linux🍎 macOS🪟 Windows
⚠️ Instalación manual✅ Wheels de Python✅ Wheels de Python

🔧 Instalar GStreamer

Paso 1: Instalar GStreamer

Para sistemas basados en Ubuntu/Debian:

En tu terminal, ejecuta:

sudo apt-get update
sudo apt-get install -y \
libgstreamer-plugins-bad1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer1.0-dev \
libglib2.0-dev \
libssl-dev \
libgirepository1.0-dev \
libcairo2-dev \
libportaudio2 \
libnice10 \
gstreamer1.0-plugins-good \
gstreamer1.0-alsa \
gstreamer1.0-plugins-bad \
gstreamer1.0-nice \
python3-gi \
python3-gi-cairo

Solo para Ubuntu 22.04: La versión predeterminada de GStreamer es demasiado antigua. Se requiere GStreamer >=1.22. Necesitas añadir un PPA para obtener GStreamer 1.24.x:

sudo add-apt-repository ppa:savoury1/multimedia
sudo apt update
sudo apt install \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev \
libgstreamer-plugins-bad1.0-dev

Verifica que tengas la versión correcta:

pkg-config --modversion gstreamer-1.0
# Should output 1.24.x or higher

Paso 2: Instalar Rust

En Linux, el plugin WebRTC no está habilitado por defecto y debe compilarse manualmente a partir del código fuente en Rust. Instala Rust desde la línea de comandos usando rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Paso 3: Compilar e instalar el plugin WebRTC

Para compilar e instalar el plugin WebRTC, ejecuta los siguientes comandos:

# Clone the GStreamer Rust plugins repository
git clone https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
cd gst-plugins-rs
git checkout 0.14.1

# Install the cargo-c build tool
cargo install cargo-c

# Create installation directory
sudo mkdir -p /opt/gst-plugins-rs
sudo chown $USER /opt/gst-plugins-rs

# Build and install the WebRTC plugin (this may take several minutes)
cargo cinstall -p gst-plugin-webrtc --prefix=/opt/gst-plugins-rs --release

# Add plugin path to your environment
echo 'export GST_PLUGIN_PATH=/opt/gst-plugins-rs/lib/x86_64-linux-gnu:$GST_PLUGIN_PATH' >> ~/.bashrc
source ~/.bashrc

💡 Nota: Para sistemas ARM64 (como Raspberry Pi), reemplaza x86_64-linux-gnu por aarch64-linux-gnu en el comando de export.

No es necesario instalar GStreamer manualmente ya que se proporcionan los wheels. Sin embargo, aún es posible evitar usar los wheels y depender de la instalación del sistema.

Usando Homebrew

brew install gstreamer libnice-gstreamer

El plugin WebRTC está habilitado por defecto en el paquete de Homebrew.

No es necesario instalar GStreamer manualmente ya que se proporcionan los wheels. Sin embargo, aún es posible evitar usar los wheels y depender de la instalación del sistema.

Paso 1: Instalar GStreamer usando el instalador oficial

Download GStreamer for Windows

  1. Descarga el instalador runtime (versión MSVC)
  2. Instala con la opción de instalación Complete
  3. Edita las variables de entorno y añade al PATH del sistema: C:\Program Files\gstreamer\1.0\msvc_x86_64\bin
  4. Añade a PYTHONPATH: C:\Program Files\gstreamer\1.0\msvc_x86_64\lib\site-packages

💡 Importante: Reemplaza C:\Program Files\gstreamer por tu carpeta real de instalación de GStreamer si lo instalaste en una ubicación diferente.

✅ Verificar la instalación

Finalmente, puedes probar tu instalación de GStreamer de la siguiente manera:

# Check version
gst-launch-1.0(.exe) --version

# Test basic functionalities
gst-launch-1.0 videotestsrc ! autovideosink

# Verify WebRTC plugin
gst-inspect-1.0 webrtcsrc

También deberías poder importar las bibliotecas de GStreamer en un entorno de Python:

python -c "import gi"

Resolución de problemas y pruebas unitarias

Si encuentras problemas con el flujo, puedes probar los componentes individualmente de la siguiente manera.

Prueba 1: Crear manualmente el servidor WebRTC Ejecuta este pipeline de GStreamer en el robot para verificar la cámara y la pila del codificador:

gst-launch-1.0 webrtcsink run-signalling-server=true meta="meta,name=reachymini" name=ws libcamerasrc ! capsfilter caps=video/x-raw,width=1280,height=720,framerate=60/1,format=YUY2,colorimetry=bt709,interlace-mode=progressive ! queue !  v4l2h264enc extra-controls="controls,repeat_sequence_header=1" ! 'video/x-h264,level=(string)4' ! ws. alsasrc device=hw:4 ! queue ! audioconvert ! audioresample ! opusenc ! audio/x-opus, rate=48000, channels=2 ! ws.
Loading Comments...