Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
8e79b15
feat: add timelinev2
ankit-v2-3 Jun 23, 2025
a8fdf4e
fix: fit
ankit-v2-3 Jun 23, 2025
1e4a5f6
build: update v
ankit-v2-3 Jun 23, 2025
2b51bfc
fix: image asset
ankit-v2-3 Jun 26, 2025
2940995
feat: add audio asset
ankit-v2-3 Jul 2, 2025
2672b72
fix: asset enum
ankit-v2-3 Jul 2, 2025
3537e39
feat: add text asset
ankit-v2-3 Jul 8, 2025
ac78d55
fix: volume range
ankit-v2-3 Jul 17, 2025
b28928e
Add audio param support in connect rtstream
ashish-spext Jul 17, 2025
ac1fa60
Remove timeline v2 to avoid conflict
ashish-spext Jul 17, 2025
35a0240
Add get trasscript for rtstream
ashish-spext Jul 17, 2025
2e7a564
Add joined status for meeting bot
ashish-spext Jul 21, 2025
fcf4796
feat: add caption asset
ankit-v2-3 Aug 5, 2025
9d5a6b0
fix: caption animation
ankit-v2-3 Aug 5, 2025
92dc137
fix: border style
ankit-v2-3 Aug 5, 2025
339e3a0
feat: add timeline download
ankit-v2-3 Aug 18, 2025
5027f9a
fix: position enum
ankit-v2-3 Sep 4, 2025
b28968a
fix: border style enum
ankit-v2-3 Sep 8, 2025
b15ab4f
docs: add docstrings
ankit-v2-3 Nov 21, 2025
33a271f
feat: increase api gateway timeout
ankit-v2-3 Dec 5, 2025
c379a86
feat: add editor
ankit-v2-3 Dec 10, 2025
2c3d152
fix: asset start
ankit-v2-3 Dec 12, 2025
092100d
docs: add docstrings
ankit-v2-3 Dec 12, 2025
7dee62d
Merge branch 'main' into ankit/add-videodb-editor
ankit-v2-3 Dec 12, 2025
8282460
fix: ci/cd
ankit-v2-3 Dec 12, 2025
d340301
fix: ci/cd
ankit-v2-3 Dec 12, 2025
f3af108
fix: ci/cd
ankit-v2-3 Dec 12, 2025
cc7e2b9
fix: ci/cd
ankit-v2-3 Dec 12, 2025
9bb1f56
docs: add docstings
ankit-v2-3 Dec 12, 2025
c1518c0
fix: ci/cd
ankit-v2-3 Dec 12, 2025
0d3a546
feat: add base64 ass string
ankit-v2-3 Dec 15, 2025
2889cb9
fix: Fit Enum
ankit-v2-3 Dec 24, 2025
1f325b1
Add reframe, smart vertical reframe and download functionality for vi…
ashish-spext Dec 25, 2025
4054df1
Add support for audio transcription and remove not required segmenter…
ashish-spext Dec 25, 2025
de2e32a
build: update version
ankit-v2-3 Dec 26, 2025
280ecf3
fix: https payload limit
ankit-v2-3 Jan 6, 2026
d6bf260
fix: payload limit to 100kb
ankit-v2-3 Jan 6, 2026
bd2c489
fix: remove font weight
ankit-v2-3 Jan 6, 2026
d3c606f
Merge branch 'release-0-4-0' into ankit/add-videodb-editor
ankit-v2-3 Jan 6, 2026
fe34907
Merge pull request #56 from video-db/ankit/add-videodb-editor
ankit-v2-3 Jan 6, 2026
d661049
build: update sdk version
ankit-v2-3 Jan 6, 2026
da16dd6
Merge branch 'release-0-4-0' of https://github.com/video-db/videodb-p…
ankit-v2-3 Jan 6, 2026
595899d
fix: collection upload
ankit-v2-3 Jan 6, 2026
43113c7
Merge pull request #57 from video-db/ankit/fix-collection-upload
ankit-v2-3 Jan 6, 2026
8b9a18b
fix: Allow 0 as score threshold and result threshold
ankit-v2-3 Jan 6, 2026
b298603
feat: add scene_index_id, scene_index_name, metadata in Shot
ankit-v2-3 Jan 6, 2026
e5a545d
feat: segmentation_type llm in spoken word index
ankit-v2-3 Jan 6, 2026
f4bf275
feat: video add clips
ankit-v2-3 Jan 6, 2026
4261ea9
Merge pull request #58 from video-db/add-rt-meeting-support
ashish-spext Jan 6, 2026
75a4546
fix: formatting
ankit-v2-3 Jan 6, 2026
c650463
fix: Meeting __repr__
ankit-v2-3 Jan 6, 2026
c46750e
fix: remove realtime stream from meeting
ankit-v2-3 Jan 7, 2026
0f682d8
rtstream: add optional audio streams, new index type : transcript and…
0xrohitgarg Jan 15, 2026
1bd11cb
rtstream: RTStreamSearchResult
0xrohitgarg Jan 15, 2026
39ccd88
Add rtstream namespace collection search
ashish-spext Jan 16, 2026
b4e6139
Remove stitch, rerank params from rtstream collection search
0xrohitgarg Jan 16, 2026
99ce6fa
Merge pull request #60 from video-db/codex/add-/rtstream/collection/s…
0xrohitgarg Jan 16, 2026
54dd888
feat: add Capture Session and WebSocket support
lalit-videodb Jan 16, 2026
086d31b
fix: remove unused imports for ruff linting
lalit-videodb Jan 16, 2026
90eb909
fix: remove remaining unused imports
lalit-videodb Jan 16, 2026
a99dac6
feat: add enable_transcript and ws_connection_id to connect_rtstream
lalit-videodb Jan 16, 2026
465480d
accept ws_connection_id in spoken index and scene index
0xrohitgarg Jan 16, 2026
75115e5
feat: implement backend SDK support for CaptureSession and RTStream r…
lalit-videodb Jan 20, 2026
83c6061
feat: implement desktop capture sdk and binary communication protocol
lalit-videodb Jan 20, 2026
d257804
refactor(capture): refine CaptureClient API and session handling
lalit-videodb Jan 21, 2026
c3a6351
fix(lint): fix unused imports and exports
lalit-videodb Jan 21, 2026
37dc162
feat: Add specialized indexing methods and stream retrieval
lalit-videodb Jan 21, 2026
8e690fb
fix: Remove unused Optional import in capture_session.py
lalit-videodb Jan 21, 2026
47a0ddf
feat: Simplify RTStream filtering and add index_audio/index_visuals
lalit-videodb Jan 21, 2026
2dc797f
start an stop transcript methods
0xrohitgarg Jan 21, 2026
97a7541
refactor: decouple token/session, simplify channels, and rename socke…
lalit-videodb Jan 21, 2026
c2c4792
refactor: standardize RTStream channel types and normalize rtstream d…
lalit-videodb Jan 22, 2026
33581ef
rtstream: ws_connection_id support for rtstream
0xrohitgarg Jan 22, 2026
af57791
Add options in list rtstream
ashish-spext Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ venv/
.vscode/*
example.ipynb
example.py
# test_local.py
capture_bin/videodb_capture_bin/bin/*
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import os
import sys

def get_binary_path():
"""Returns the absolute path to the recorder binary."""
# This file is at: capture_bin/videodb_capture_bin/__init__.py
# Binary is at: capture_bin/videodb_capture_bin/bin/recorder (or .exe)
base_dir = os.path.dirname(os.path.abspath(__file__))
bin_dir = os.path.join(base_dir, "bin")

if sys.platform == "win32":
binary_name = "recorder.exe"
else:
binary_name = "recorder"

binary_path = os.path.join(bin_dir, binary_name)

if not os.path.exists(binary_path):
raise FileNotFoundError(
f"Recorder binary not found at {binary_path}. "
"Please ensure the package was installed correctly for your platform."
)

return binary_path
Binary file not shown.
27 changes: 27 additions & 0 deletions capture_bin/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from setuptools import setup, Distribution

class BinaryDistribution(Distribution):
"""Forces the distribution to be platform-specific."""
def has_ext_modules(foo):
return True

VERSION = "0.2.4"

setup(
name="videodb-capture-bin",
version=VERSION,
author="VideoDB",
description="Binary container for VideoDB Capture runtime",
packages=["videodb_capture_bin"],
package_data={
"videodb_capture_bin": ["bin/*"],
},
include_package_data=True,
distclass=BinaryDistribution,
classifiers=[
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"License :: OSI Approved :: Apache Software License",
],
python_requires=">=3.8",
)
13 changes: 13 additions & 0 deletions capture_bin/videodb_capture_bin.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Metadata-Version: 2.4
Name: videodb-capture-bin
Version: 0.2.4
Summary: Binary container for VideoDB Capture runtime
Author: VideoDB
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.8
Dynamic: author
Dynamic: classifier
Dynamic: requires-python
Dynamic: summary
6 changes: 6 additions & 0 deletions capture_bin/videodb_capture_bin.egg-info/SOURCES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
setup.py
videodb_capture_bin/__init__.py
videodb_capture_bin.egg-info/PKG-INFO
videodb_capture_bin.egg-info/SOURCES.txt
videodb_capture_bin.egg-info/dependency_links.txt
videodb_capture_bin.egg-info/top_level.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions capture_bin/videodb_capture_bin.egg-info/top_level.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
videodb_capture_bin
24 changes: 24 additions & 0 deletions capture_bin/videodb_capture_bin/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import os
import sys

def get_binary_path():
"""Returns the absolute path to the recorder binary."""
# This file is at: capture_bin/videodb_capture_bin/__init__.py
# Binary is at: capture_bin/videodb_capture_bin/bin/recorder (or .exe)
base_dir = os.path.dirname(os.path.abspath(__file__))
bin_dir = os.path.join(base_dir, "bin")

if sys.platform == "win32":
binary_name = "recorder.exe"
else:
binary_name = "recorder"

binary_path = os.path.join(bin_dir, binary_name)

if not os.path.exists(binary_path):
raise FileNotFoundError(
f"Recorder binary not found at {binary_path}. "
"Please ensure the package was installed correctly for your platform."
)

return binary_path
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
requests==2.31.0
backoff==2.2.1
tqdm==4.66.1
websockets>=12.0
5 changes: 4 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@
long_description=long_description,
long_description_content_type="text/markdown",
url=about["__url__"],
packages=find_packages(exclude=["tests", "tests.*"]),
packages=find_packages(exclude=["tests", "tests.*", "capture_bin", "videodb_capture_bin"]),
python_requires=">=3.8",
install_requires=[
"requests>=2.25.1",
"backoff>=2.2.1",
"tqdm>=4.66.1",
],
extras_require={
"capture": ["videodb-capture-bin>=0.2.4"],
},
classifiers=[
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
Expand Down
2 changes: 1 addition & 1 deletion videodb/__about__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@



__version__ = "0.3.0"
__version__ = "0.4.0"
__title__ = "videodb"
__author__ = "videodb"
__email__ = "contact@videodb.io"
Expand Down
18 changes: 18 additions & 0 deletions videodb/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,24 @@
ResizeMode,
VideoConfig,
AudioConfig,
ReframeMode,
SegmentationType,
)
from videodb.client import Connection
from videodb.capture_session import CaptureSession
from videodb.websocket_client import WebSocketConnection
from videodb.capture import CaptureClient, Channel, AudioChannel, VideoChannel, Channels

__all__ = [
"connect",
"CaptureSession",
"WebSocketConnection",
"CaptureClient",
"Channel",
"AudioChannel",
"VideoChannel",
"Channels",
]
from videodb.exceptions import (
VideodbError,
AuthenticationError,
Expand Down Expand Up @@ -51,6 +67,8 @@
"ResizeMode",
"VideoConfig",
"AudioConfig",
"ReframeMode",
"SegmentationType",
]


Expand Down
18 changes: 18 additions & 0 deletions videodb/_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ class MediaType:
image = "image"


class RTStreamChannelType:
mic = "mic"
screen = "screen"
system_audio = "system_audio"


class SearchType:
semantic = "semantic"
keyword = "keyword"
Expand All @@ -27,6 +33,7 @@ class IndexType:
class SceneExtractionType:
shot_based = "shot"
time_based = "time"
transcript = "transcript"


class Workflows:
Expand All @@ -49,6 +56,11 @@ class Segmenter:
sentence = "sentence"


class SegmentationType:
sentence = "sentence"
llm = "llm"


class ApiPath:
collection = "collection"
upload = "upload"
Expand Down Expand Up @@ -91,6 +103,11 @@ class ApiPath:
record = "record"
editor = "editor"
reframe = "reframe"
clip = "clip"
capture = "capture"
session = "session"
token = "token"
websocket = "websocket"


class Status:
Expand All @@ -101,6 +118,7 @@ class Status:
class MeetingStatus:
initializing = "initializing"
processing = "processing"
joined = "joined"
done = "done"


Expand Down
8 changes: 6 additions & 2 deletions videodb/_upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def upload(
callback_url: Optional[str] = None,
file_path: Optional[str] = None,
url: Optional[str] = None,
collection_id: Optional[str] = None,
) -> dict:
"""Upload a file or URL.

Expand All @@ -40,9 +41,12 @@ def upload(
:param str callback_url: URL to receive the callback (optional)
:param str file_path: Path to the file to be uploaded
:param str url: URL of the file to be uploaded
:param str collection_id: ID of the collection to upload to (optional)
:return: Dictionary containing upload response data
:rtype: dict
"""
collection_id = collection_id or _connection.collection_id

if source and (file_path or url):
raise VideodbError("source cannot be used with file_path or url")

Expand All @@ -68,7 +72,7 @@ def upload(
try:
name = file_path.split("/")[-1].split(".")[0] if not name else name
upload_url_data = _connection.get(
path=f"{ApiPath.collection}/{_connection.collection_id}/{ApiPath.upload_url}",
path=f"{ApiPath.collection}/{collection_id}/{ApiPath.upload_url}",
params={"name": name},
)
upload_url = upload_url_data.get("upload_url")
Expand All @@ -85,7 +89,7 @@ def upload(
raise VideodbError("Error while uploading file", cause=e)

upload_data = _connection.post(
path=f"{ApiPath.collection}/{_connection.collection_id}/{ApiPath.upload}",
path=f"{ApiPath.collection}/{collection_id}/{ApiPath.upload}",
data={
"url": url,
"name": name,
Expand Down
Loading