Bedrud incluye agentes de bot basados en Python que pueden unirse a salas de reunión y transmitir contenido multimedia. Son útiles para música de fondo, transmisiones de radio o compartir contenido de video.
Agentes Disponibles
| Agente | Descripción | Tipo de Medio |
|---|---|---|
music_agent | Reproduce archivos de audio en una sala | Audio (PCM) |
radio_agent | Transmite estaciones de radio de internet | Audio (PCM vía FFmpeg) |
video_stream_agent | Comparte contenido de video (HLS, MP4) | Video + Audio |
Cómo Funcionan los Agentes
Todos los agentes siguen el mismo patrón de conexión:
flowchart TD
A[1. Parse meeting URL] --> B[2. Guest login<br/>POST /api/auth/guest-login]
B --> C[3. Join room<br/>POST /api/room/join]
C --> D[4. Connect to LiveKit<br/>WebSocket + Token]
D --> E[5. Publish tracks<br/>Stream audio/video frames]flowchart LR
subgraph Media["Media Source"]
MS["File / URL<br/>(MP3, radio, HLS, MP4)"]
end
subgraph Agent["Python Agent"]
FF[FFmpeg Decoder]
PA[Agent Logic]
end
subgraph Server["Bedrud Server"]
GL[Guest Login<br/>/api/auth/guest-login]
JR[Join Room<br/>/api/room/join]
end
subgraph LK["LiveKit SFU<br/>(WebRTC)"]
WS[WebSocket Connect]
PT[Publish Tracks]
end
MS --> FF --> PA
PA --> GL
GL --> JR
JR --> WS
WS --> PTAgente de Música
Reproduce archivos de audio (MP3, WAV, etc.) en una sala de reunión.
Configuración
cd agents/music_agent
pip install -r requirements.txtDependencias: httpx, livekit, pydub
Uso
python agent.py "https://meet.example.com/m/room-name"Cómo Funciona
- Decodifica archivos de audio usando
pydub - Convierte a cuadros PCM
- Publica cuadros de audio en LiveKit como un track de micrófono
Consulte Music Agent README para obtener instrucciones de configuración y uso.
Agente de Radio
Transmite estaciones de radio de internet en una sala de reunión usando FFmpeg para decodificación de audio.
Configuración
cd agents/radio_agent
pip install -r requirements.txtDependencias: httpx, livekit
Requisito del sistema: FFmpeg debe estar instalado (brew install ffmpeg o apt install ffmpeg)
Uso
python agent.py "https://meet.example.com/m/room-name"Cómo Funciona
- Se conecta a una URL de transmisión de radio
- Canaliza la transmisión a través de FFmpeg para decodificar a PCM crudo
- Publica cuadros de audio PCM en LiveKit
Consulte Radio Agent README para obtener instrucciones de configuración y uso.
Agente de Transmisión de Video
Comparte video y audio desde una URL (HLS/m3u8, MP4) en una sala de reunión.
Configuración
cd agents/video_stream_agent
pip install -r requirements.txtDependencias: httpx, livekit
Requisito del sistema: FFmpeg debe estar instalado
Uso
python agent.py "https://meet.example.com/m/room-name"Cómo Funciona
- Ejecuta dos procesos de FFmpeg en paralelo:
- Video: Decodifica a cuadros crudos YUV420p (1280x720 @ 30fps)
- Audio: Decodifica a muestras PCM
- Publica el video como un track de pantalla compartida
- Publica el audio como un track de micrófono
Consulte Video Stream Agent README para obtener instrucciones de configuración y uso.
Especificaciones de Video
| Configuración | Valor |
|---|---|
| Ancho | 1280 |
| Alto | 720 |
| FPS | 30 |
| Formato de Píxel | YUV420p |
Escribir un Agente Personalizado
Para crear un nuevo agente, siga este patrón:
import httpx
from livekit import rtc
# 1. Analizar la URL de la reunión para extraer el nombre de la sala
room_name = parse_url(meeting_url)
# 2. Inicio de sesión de invitado
client = httpx.Client(base_url=server_url)
resp = client.post("/api/auth/guest-login", json={"name": "Bot Name"})
token = resp.json()["token"]
# 3. Unirse a la sala
client.headers["Authorization"] = f"Bearer {token}"
resp = client.post("/api/room/join", json={"roomName": room_name})
lk_token = resp.json()["token"]
# 4. Conectar a LiveKit
room = rtc.Room()
await room.connect(livekit_url, lk_token)
# 5. Publicar tracks
source = rtc.AudioSource(sample_rate=48000, num_channels=1)
track = rtc.LocalAudioTrack.create_audio_track("audio", source)
await room.local_participant.publish_track(track)
# 6. Transmitir cuadros
while has_data:
frame = get_next_frame()
await source.capture_frame(frame)Véase también
- Music Agent README - configuración y uso
- Radio Agent README - configuración y uso
- Video Stream Agent README - configuración y uso