Skip to content

Commit 6b37bd9

Browse files
authored
Merge pull request #299 from roboflow/video_inference_fps
ensure fps limit of 120 enforced
2 parents b1c63d6 + 67269e1 commit 6b37bd9

File tree

5 files changed

+63
-6
lines changed

5 files changed

+63
-6
lines changed

roboflow/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from roboflow.models import CLIPModel, GazeModel # noqa: F401
1616
from roboflow.util.general import write_line
1717

18-
__version__ = "1.1.38"
18+
__version__ = "1.1.39"
1919

2020

2121
def check_key(api_key, model, notebook, num_retries=0):

roboflow/models/inference.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,8 @@ def predict_video(
167167
signed_url_expires = None
168168

169169
url = urljoin(API_URL, "/video_upload_signed_url?api_key=" + self.__api_key)
170-
171-
# if fps > 5:
172-
# raise Exception("FPS must be less than or equal to 5.")
170+
if fps > 120:
171+
raise Exception("FPS must be less than or equal to 120.")
173172

174173
for model in additional_models:
175174
if model not in SUPPORTED_ADDITIONAL_MODELS:

roboflow/models/video.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ def predict( # type: ignore[override]
9797

9898
url = urljoin(API_URL, f"/video_upload_signed_url/?api_key={self.__api_key}")
9999

100-
if fps > 30:
101-
raise Exception("FPS must be less than or equal to 30.")
100+
if fps > 120:
101+
raise Exception("FPS must be less than or equal to 120.")
102102

103103
if additional_models is None:
104104
additional_models = []

roboflow/roboflowpy.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,24 @@ def get_workspace(args):
114114
print(json.dumps(workspace_json, indent=2))
115115

116116

117+
def run_video_inference_api(args):
118+
rf = roboflow.Roboflow(args.api_key)
119+
project = rf.workspace().project(args.project)
120+
version = project.version(args.version_number)
121+
model = project.version(version).model
122+
123+
# model = VideoInferenceModel(args.api_key, project.id, version.version, project.id) # Pass dataset_id
124+
# Pass model_id and version
125+
job_id, signed_url, expire_time = model.predict_video(
126+
args.video_file,
127+
args.fps,
128+
prediction_type="batch-video",
129+
)
130+
results = model.poll_until_video_results(job_id)
131+
with open("test_video.json", "w") as f:
132+
json.dump(results, f)
133+
134+
117135
def get_workspace_project_version(args):
118136
# api_key = load_roboflow_api_key(args.workspaceId)
119137
rf = roboflow.Roboflow(args.api_key)
@@ -174,6 +192,7 @@ def _argparser():
174192
_add_workspaces_parser(subparsers)
175193
_add_upload_model_parser(subparsers)
176194
_add_get_workspace_project_version_parser(subparsers)
195+
_add_run_video_inference_api_parser(subparsers)
177196
deployment.add_deployment_parser(subparsers)
178197

179198
return parser
@@ -332,6 +351,43 @@ def _add_workspaces_parser(subparsers):
332351
workspaceget_parser.set_defaults(func=get_workspace)
333352

334353

354+
def _add_run_video_inference_api_parser(subparsers):
355+
run_video_inference_api_parser = subparsers.add_parser(
356+
"run_video_inference_api",
357+
help="run video inference api",
358+
)
359+
360+
run_video_inference_api_parser.add_argument(
361+
"-a",
362+
dest="api_key",
363+
help="api_key",
364+
)
365+
run_video_inference_api_parser.add_argument(
366+
"-p",
367+
dest="project",
368+
help="project_id to upload the image into",
369+
)
370+
run_video_inference_api_parser.add_argument(
371+
"-v",
372+
dest="version_number",
373+
type=int,
374+
help="version number to upload the model to",
375+
)
376+
run_video_inference_api_parser.add_argument(
377+
"-f",
378+
dest="video_file",
379+
help="path to video file",
380+
)
381+
run_video_inference_api_parser.add_argument(
382+
"-fps",
383+
dest="fps",
384+
type=int,
385+
help="fps",
386+
default=5,
387+
)
388+
run_video_inference_api_parser.set_defaults(func=run_video_inference_api)
389+
390+
335391
def _add_infer_parser(subparsers):
336392
infer_parser = subparsers.add_parser(
337393
"infer",

tests/manual/video_inference.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/env bash
2+
python ../../roboflow/roboflowpy.py run_video_inference_api -a -p -v -f -fps

0 commit comments

Comments
 (0)