Bedrud включает ботов-агентов на Python, которые могут подключаться к комнатам и транслировать медиаконтент. Они полезны для фоновой музыки, радиопотоков или демонстрации видеоконтеинта.
Доступные агенты
| Агент | Описание | Тип медиа |
|---|---|---|
music_agent | Воспроизводит аудиофайлы в комнате | Аудио (PCM) |
radio_agent | Транслирует интернет-радиостанции | Аудио (PCM через FFmpeg) |
video_stream_agent | Демонстрирует видеоконтент (HLS, MP4) | Видео + Аудио |
Как работают агенты
Все агенты следуют одному паттерну подключения:
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 --> PTМузыкальный агент
Воспроизводит аудиофайлы (MP3, WAV и др.) в комнате конференции.
Установка
cd agents/music_agent
pip install -r requirements.txtЗависимости: httpx, livekit, pydub
Использование
python agent.py "https://meet.example.com/m/room-name"Принцип работы
- Декодирует аудиофайлы с помощью
pydub - Конвертирует в PCM-фреймы
- Публикует аудиофреймы в LiveKit как дорожку микрофона
См. README музыкального агента для инструкций по установке и использованию.
Радио-агент
Транслирует интернет-радиостанции в комнату конференции, используя FFmpeg для декодирования аудио.
Установка
cd agents/radio_agent
pip install -r requirements.txtЗависимости: httpx, livekit
Системное требование: должен быть установлен FFmpeg (brew install ffmpeg или apt install ffmpeg)
Использование
python agent.py "https://meet.example.com/m/room-name"Принцип работы
- Подключается к URL радиопотока
- Передаёт поток через FFmpeg для декодирования в Raw PCM
- Публикует PCM-аудиофреймы в LiveKit
См. README радио-агента для инструкций по установке и использованию.
Видеостриминг-агент
Демонстрирует видео и аудио по URL (HLS/m3u8, MP4) в комнате конференции.
Установка
cd agents/video_stream_agent
pip install -r requirements.txtЗависимости: httpx, livekit
Системное требование: должен быть установлен FFmpeg
Использование
python agent.py "https://meet.example.com/m/room-name"Принцип работы
- Запускает два процесса FFmpeg параллельно:
- Видео: декодирует в Raw-фреймы YUV420p (1280x720 @ 30fps)
- Аудио: декодирует в PCM-сэмплы
- Публикует видео как дорожку демонстрации экрана
- Публикует аудио как дорожку микрофона
См. README видеостриминг-агента для инструкций по установке и использованию.
Характеристики видео
| Параметр | Значение |
|---|---|
| Ширина | 1280 |
| Высота | 720 |
| FPS | 30 |
| Формат пикселей | YUV420p |
Создание собственного агента
Для создания нового агента следуйте этому паттерну:
import httpx
from livekit import rtc
# 1. Parse the meeting URL to extract room name
room_name = parse_url(meeting_url)
# 2. Guest login
client = httpx.Client(base_url=server_url)
resp = client.post("/api/auth/guest-login", json={"name": "Bot Name"})
token = resp.json()["token"]
# 3. Join room
client.headers["Authorization"] = f"Bearer {token}"
resp = client.post("/api/room/join", json={"roomName": room_name})
lk_token = resp.json()["token"]
# 4. Connect to LiveKit
room = rtc.Room()
await room.connect(livekit_url, lk_token)
# 5. Publish 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. Stream frames
while has_data:
frame = get_next_frame()
await source.capture_frame(frame)См. также
- README музыкального агента - установка и использование
- README радио-агента - установка и использование
- README видеостриминг-агента - установка и использование