mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-08-01 00:22:19 +03:00
Fixes (#18220)
* Add option to not trim clip * Improve API * Update snapshot for new best objects * Fix missing strings * Convert to separate key * Always include bounding box on snapshots * improve autotracking relative zooming time calculation * update proxy docs to note the need for comma separated header roles * Add count translation * tracked object lifecycle i18n fix * update speed estimation docs * clarity * Re-initialize onvif information when toggling camera on live view * Move time ago to card info and add face area * Clarify face recognition docs * Increase minimum face recognition area * use clipFrom to in vod module endpoint to start at the correct time * Cleanup media api * Don't change duration * Use search detail dialog for face library * Move to segment based * Cleanup * Add back duration modification * clean up docs --------- Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
This commit is contained in:
co-authored by
Josh Hawkins
parent
1fa7ce5486
commit
d3d05fa397
+19
-7
@@ -593,10 +593,12 @@ def recording_clip(
|
||||
clip: Recordings
|
||||
for clip in recordings:
|
||||
file.write(f"file '{clip.path}'\n")
|
||||
|
||||
# if this is the starting clip, add an inpoint
|
||||
if clip.start_time < start_ts:
|
||||
file.write(f"inpoint {int(start_ts - clip.start_time)}\n")
|
||||
# if this is the ending clip, add an outpoint
|
||||
|
||||
# if this is the ending clip and end trim is enabled, add an outpoint
|
||||
if clip.end_time > end_ts:
|
||||
file.write(f"outpoint {int(end_ts - clip.start_time)}\n")
|
||||
|
||||
@@ -641,7 +643,12 @@ def recording_clip(
|
||||
@router.get("/vod/{camera_name}/start/{start_ts}/end/{end_ts}")
|
||||
def vod_ts(camera_name: str, start_ts: float, end_ts: float):
|
||||
recordings = (
|
||||
Recordings.select(Recordings.path, Recordings.duration, Recordings.end_time)
|
||||
Recordings.select(
|
||||
Recordings.path,
|
||||
Recordings.duration,
|
||||
Recordings.end_time,
|
||||
Recordings.start_time,
|
||||
)
|
||||
.where(
|
||||
Recordings.start_time.between(start_ts, end_ts)
|
||||
| Recordings.end_time.between(start_ts, end_ts)
|
||||
@@ -661,14 +668,19 @@ def vod_ts(camera_name: str, start_ts: float, end_ts: float):
|
||||
clip = {"type": "source", "path": recording.path}
|
||||
duration = int(recording.duration * 1000)
|
||||
|
||||
# Determine if we need to end the last clip early
|
||||
# adjust start offset if start_ts is after recording.start_time
|
||||
if start_ts > recording.start_time:
|
||||
inpoint = int((start_ts - recording.start_time) * 1000)
|
||||
clip["clipFrom"] = inpoint
|
||||
duration -= inpoint
|
||||
|
||||
# adjust end if recording.end_time is after end_ts
|
||||
if recording.end_time > end_ts:
|
||||
duration -= int((recording.end_time - end_ts) * 1000)
|
||||
|
||||
if duration == 0:
|
||||
# this means the segment starts right at the end of the requested time range
|
||||
# and it does not need to be included
|
||||
continue
|
||||
if duration <= 0:
|
||||
# skip if the clip has no valid duration
|
||||
continue
|
||||
|
||||
if 0 < duration < max_duration_ms:
|
||||
clip["keyFrameDurations"] = [duration]
|
||||
|
||||
Reference in New Issue
Block a user