Skip to main content
Open In Colab From an hour long video, want to create a fun compilation of every moment Mark Zuckerberg says ‘metaverse’?

Overview

In this tutorial, let’s explore the powerful functionality of Keyword Search in VideoDB. This feature enables users to efficiently locate any keyword or phrase within their video assets, streamlining the process of content discovery. Fun keyword search example with Mark Zuckerberg metaverse compilation

Setup

Installing packages

!pip install videodb

API Keys

Before proceeding, ensure access to VideoDB Get your API key from VideoDB Console. ( Free for first 50 uploads, No credit card required)

Steps

Step 1: Connect to VideoDB

Begin by establishing a connection to VideoDB using your API key
import videodb

# Set your API key
api_key = "your_api_key"

# Connect to VideoDB
conn = videodb.connect(api_key=api_key)
coll = conn.get_collection()

Step 2: Upload Video

Upload the video to your VideoDB collection. You can upload the video asset from your local device or from a YouTube URL to upload the video from its source. This works as the base video for all the Keyword Search queries.
video = coll.upload(url="https://www.youtube.com/watch?v=Uvufun6xer8")
video.play()
You can upload from your local file system too by passing file_path in upload() For this tutorial, we’ll run a Keyword Search on the following video:

Step 3: Index Spoken Words

Index the spoken words in your video to enable accurate keyword search.
video.index_spoken_words()

Step 4: Search for any keyword

Utilize the keyword search by using video.search() method with following parameters.
  • pass search query in query parameter
  • pass SearchType.keyword in search_type
Note: You will need to import SearchType first to enable this function
from videodb import SearchType

results = video.search(query='metaverse', search_type=SearchType.keyword)

Step 5: Preview and Share

Preview your video with a compilation of all the clips matching your search query. You can access the stream link alongside the preview to share the Keyword Search result with others.
results.play()

Bonus: Refining Keyword Search results by adding padding

Some keyword search results/ compilations may appear slightly choppy, or the cuts may feel abrupt. We can solve this issue by using VideoDB’s padding controls. Here’s how it works: The resulting shots can be made smoother by including a little more context from before and after the matching timestamps. That’s exactly what padding controls enable: Using the Editor SDK’s Track and Clip pattern, we can create a timeline with padding:
  1. Create a timeline and track using Timeline() and Track()
  2. Create a VideoAsset with id and start parameters (where start is adjusted by subtracting padding)
  3. Wrap each asset in a Clip with the appropriate duration (adding padding on both ends)
  4. Add clips to the track sequentially using track.add_clip(start_time, clip)
from videodb import play_stream
from videodb.editor import Timeline, Track, Clip, VideoAsset

timeline = Timeline(conn)

# Add padding for smoother cuts
padding = 0.4

# Create main track
track = Track()
seeker = 0

# Compile Video from search results
for shot in results.shots:
    start_with_padding = max(0, shot.start - padding)
    duration = (shot.end + padding) - start_with_padding

    asset = VideoAsset(id=shot.video_id, start=start_with_padding)
    clip = Clip(asset=asset, duration=duration)
    track.add_clip(seeker, clip)

    seeker += duration

timeline.add_track(track)

stream_url = timeline.generate_stream()
play_stream(stream_url)

Here’s the result for the same video, but improved using padding control.

Conclusion

Keyword Search in VideoDB empowers users to extract valuable insights from their video assets with ease.

More Examples

Checkout these fun experiments with Keyword search 👇
  1. So basically it’s “basically”
  1. The untold story of “generative” AI

Next Steps

Explore Full Notebook

Open the complete implementation in Google Colab with all code examples.