Bedrud ドキュメント

Bedrud には、会議ルームに参加してメディアコンテンツをストリーミングできる Python ベースの Bot エージェントが含まれています。BGM、ラジオストリーム、ビデオコンテンツの共有に便利です。

利用可能なエージェント

エージェント説明メディアタイプ
music_agentルームにオーディオファイルを再生オーディオ(PCM)
radio_agentインターネットラジオ局をストリーミングオーディオ(FFmpeg 経由 PCM)
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

Music エージェント

オーディオファイル(MP3、WAV など)を会議ルームに再生します。

セットアップ

cd agents/music_agent
pip install -r requirements.txt

依存関係: httpxlivekitpydub

使い方

python agent.py "https://meet.example.com/m/room-name"

動作の仕組み

  1. pydub を使用してオーディオファイルをデコード
  2. PCM フレームに変換
  3. オーディオフレームをマイクトラックとして LiveKit にパブリッシュ

セットアップと使い方の詳細は Music Agent README を参照してください。


Radio エージェント

FFmpeg を使用してオーディオをデコードし、インターネットラジオ局を会議ルームにストリーミングします。

セットアップ

cd agents/radio_agent
pip install -r requirements.txt

依存関係: httpxlivekit

システム要件: FFmpeg がインストールされている必要があります(brew install ffmpeg または apt install ffmpeg

使い方

python agent.py "https://meet.example.com/m/room-name"

動作の仕組み

  1. ラジオストリーム URL に接続
  2. ストリームを FFmpeg にパイプして raw PCM にデコード
  3. PCM オーディオフレームを LiveKit にパブリッシュ

セットアップと使い方の詳細は Radio Agent README を参照してください。


Video Stream エージェント

URL(HLS/m3u8、MP4)からビデオとオーディオを会議ルームに共有します。

セットアップ

cd agents/video_stream_agent
pip install -r requirements.txt

依存関係: httpxlivekit

システム要件: FFmpeg がインストールされている必要があります

使い方

python agent.py "https://meet.example.com/m/room-name"

動作の仕組み

  1. 2つの FFmpeg プロセスを並列で実行:
    • ビデオ: YUV420p の raw フレームにデコード(1280x720 @ 30fps)
    • オーディオ: PCM サンプルにデコード
  2. ビデオを画面共有トラックとしてパブリッシュ
  3. オーディオをマイクトラックとしてパブリッシュ

セットアップと使い方の詳細は Video Stream Agent README を参照してください。

ビデオ仕様

設定
1280
高さ720
FPS30
ピクセルフォーマット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)

関連項目