Arquitetura de Mídia
Compreender a arquitetura de mídia do Reachy Mini é essencial para utilizar de forma eficaz seus recursos de áudio e vídeo.
Arquitetura Unificada
O daemon sempre gerencia o hardware de câmera e áudio via GstMediaServer (media_server.py), independentemente de você estar usando um Reachy Mini (Wireless) ou Reachy Mini Lite. Essa unificação significa que ambos os modelos funcionam da mesma maneira:
- O daemon é o proprietário dos dispositivos físicos de câmera e áudio.
- Clientes locais (mesma máquina) leem quadros da câmera a partir de um endpoint IPC local e abrem o dispositivo de áudio diretamente via GStreamer — o backend
LOCAL. - Clientes remotos fazem streaming de câmera + áudio via WebRTC a partir do daemon — o backend
WEBRTC. - O SDK detecta automaticamente qual backend usar com base em se o endpoint IPC do daemon é acessível ou não.
Lado do Daemon
O daemon inicia seu pipeline de mídia automaticamente, a menos que a flag --no-media seja passada. Ele:
- Abre a câmera (ciente da plataforma: v4l2, libcamera, DirectShow, AVFoundation ou UDP para simulação).
- Abre o dispositivo de áudio (ciente da plataforma: PulseAudio, ALSA, WASAPI, CoreAudio).
- Alimenta ambos em um servidor WebRTC (
webrtcsink) para streaming remoto. - Expõe quadros brutos da câmera via um endpoint IPC local (
unixfdsinkem Linux/macOS,win32ipcvideosinkno Windows).
Lado do Cliente
O MediaManager do SDK seleciona o backend automaticamente:
- LOCAL: Usado quando o cliente é executado na mesma máquina que o daemon. Lê quadros da câmera a partir do IPC e abre o dispositivo de áudio diretamente via GStreamer. Sem sobrecarga de codificação/decodificação.
- WEBRTC: Usado quando o cliente é remoto. Faz streaming de câmera + áudio via WebRTC.
- NO_MEDIA: Ignora toda a inicialização de mídia (operação headless).
Acesso via Web
Graças ao WebRTC, os streams de áudio e vídeo também podem ser acessados diretamente a partir de um navegador web. Por exemplo, o aplicativo desktop usa esse recurso.
Desativando Mídia / Acesso Direto ao Hardware
Por padrão, o daemon é o proprietário dos dispositivos de câmera e áudio. Se você precisar de acesso direto ao hardware — por exemplo, para usar OpenCV, sounddevice ou um pipeline de visão personalizado — você pode desativar o gerenciador de mídia embutido:
from reachy_mini import ReachyMini
with ReachyMini(media_backend="no_media") as mini:
# The daemon has released camera and audio hardware.
# Use OpenCV, sounddevice, or any other library directly.
import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
# Robot control still works normally.
mini.goto_target(antennas=[0.3, -0.3], duration=0.5)
# On exit, the daemon automatically re-acquires the hardware.
Quando media_backend="no_media" é passado, o SDK:
- Pede ao daemon para liberar os dispositivos de câmera e áudio (interrompe o pipeline GStreamer).
- Define o
MediaManagerlocal comoNO_MEDIA(sem câmera/áudio através do SDK). - Ao sair do gerenciador de contexto (
__exit__), instrui o daemon a readquirir o hardware automaticamente.
Você também pode chamar release_media() e acquire_media() manualmente a qualquer momento:
mini = ReachyMini()
# ... use the built-in media manager ...
frame = mini.media.get_frame()
# Switch to direct access
mini.release_media()
# ... use OpenCV, sounddevice, etc. ...
# Switch back to the SDK media manager
mini.acquire_media()
frame = mini.media.get_frame()
⚠️ Note: Both methods are idempotent — calling
release_media()twice is safe.
Para um exemplo completo com OpenCV e sounddevice, consulte Custom Media Manager.
Controles Avançados
Consulte as páginas dedicadas para ajustar com precisão os parâmetros de câmera e microfone para o Reachy Mini e o Reachy Mini Lite.


