Documentation Index Fetch the complete documentation index at: https://docs.videodb.io/llms.txt
Use this file to discover all available pages before exploring further.
Quick Example
import videodb
conn = videodb.connect()
coll = conn.get_collection()
# Get existing stream
rtstream = coll.get_rtstream( "rts-xxx" )
# Control lifecycle
rtstream.stop() # Pause ingestion
rtstream.start() # Resume ingestion
Lifecycle Control
Start/Stop
# Pause ingestion (stream remains configured)
rtstream.stop()
# Resume ingestion
rtstream.start()
Status Values
Status Description connectedActively ingesting stoppedPaused, can resume errorConnection issue
Export a Stopped Stream
After stopping a stream, you can export it as a video or audio asset in your collection using export().
# Export a stopped stream as a video/audio asset
result = rtstream.export( name = "my_recording" )
# RTStreamExportResult attributes
print (result.video_id) # "m-xxx"
print (result.stream_url) # HLS stream URL
print (result.player_url) # Player URL (None for audio-only)
print (result.duration) # Duration in seconds
# Generate embed code from export
embed_html = result.get_embed_code()
Export Parameters
Parameter Type Description namestr (optional) Name for the exported asset. Defaults to "{stream_name} - Recording"
RTStreamExportResult
Attribute Description video_idThe ID of the exported video/audio asset stream_urlHLS stream URL for playback player_urlShareable player URL (None for audio-only channels) nameName of the exported asset durationDuration of the recording in seconds
Index Lifecycle
Indexes can also be started/stopped independently:
scene_index = rtstream.get_scene_index(index_id)
# Pause indexing (stream continues)
scene_index.stop()
# Resume indexing
scene_index.start()
Meeting Recording
Record from Zoom, Google Meet, or Microsoft Teams. A bot joins your meeting, records, and uploads directly to VideoDB.
Start Recording
meeting = conn.record_meeting(
meeting_url = "https://meet.google.com/abc-defg-hij" ,
bot_name = "Meeting Recorder" ,
bot_image_url = "https://your-domain.com/bot-avatar.jpg" ,
meeting_title = "Weekly Standup" ,
callback_url = "https://your-backend.com/webhooks/meeting" ,
callback_data = { "internal_id" : "123" }
)
print ( f "Recording started: { meeting.id } " )
Recording to Collection
coll = conn.get_collection( "your-collection-id" )
meeting = coll.record_meeting(
meeting_url = "https://zoom.us/j/123456789" ,
bot_name = "Team Recorder" ,
meeting_title = "Sprint Planning" ,
callback_url = "https://your-backend.com/webhooks"
)
Track Recording Status
# Poll status
meeting.refresh()
print ( f "Status: { meeting.status } " )
# Wait for completion
if meeting.wait_for_status( "done" , timeout = 3600 , interval = 60 ):
print ( "Recording complete!" )
video = coll.get_video(meeting.video_id)
Recording Status Values
Status Description initializingBot is being set up processingActively recording doneRecording complete failedRecording failed
Callback Payload
Success:
{
"success" : true ,
"message" : "Meeting recording completed." ,
"data" : {
"video_id" : "m-xxx" ,
"speaker_timeline" : [
{ "speaker_name" : "Alice" , "start_time_seconds" : 9.94 }
],
"stream_url" : "..." ,
"player_url" : "..."
}
}
Failure:
{
"success" : false ,
"message" : "Failed to record meeting."
}
Access Recording
meeting = coll.get_meeting( "meeting-id" )
# Get the recorded video
video = coll.get_video(meeting.video_id)
# Now searchable, indexable, etc.
video.index_spoken_words()
Platform URL Format Google Meet https://meet.google.com/xxx-xxxx-xxxZoom https://zoom.us/j/123456789Microsoft Teams Teams meeting link
Meeting Features
Brand-able Bot - Custom name and avatar
Speaker Timeline - Per-speaker timestamps (Google Meet)
Webhook Callbacks - Get notified on completion
Collection Storage - Video lands directly in your collection
Next Steps
RTSP Ingest Connect camera streams
Real-time APIs Index and search live streams