fix: enforce frame-based positioning across all video playback

Core Principle: Frame is the only standard

Changes:
- VideoPlayer: Add startFrame/endFrame props
- VideoPlayer: Use frame parameters in simple playback path
- SearchView: Remove frame/time conversion (stop using fps = 24)
- PeopleView: Pass frames directly instead of time
- PersonDetailView: Pass frames directly instead of time

All video streams now use startFrame/endFrame API parameters.
Time conversion only happens in VideoPlayer internals for UI display.

Ref: frame-based positioning standards research
This commit is contained in:
2026-07-24 21:17:11 +08:00
parent 2af8ffaf93
commit 1fd6312f7e
4 changed files with 15 additions and 11 deletions

View File

@@ -161,6 +161,8 @@ const props = withDefaults(defineProps<{
fileUuid: string
startTime?: number
endTime?: number
startFrame?: number
endFrame?: number
allTraces?: any[]
mergedSegments?: any[]
initialTraceIdx?: number
@@ -886,10 +888,15 @@ onMounted(async () => {
emit('trace-change', currentTraceIdx.value)
} else {
try {
const st = props.startTime ?? 0
pendingSeekTime.value = st
const stFrame = props.startFrame ?? 0
const enFrame = props.endFrame
const data = await apiCall('get_video_stream', {
uuid: props.fileUuid,
startTime: null,
endTime: null,
startFrame: stFrame,
endFrame: enFrame,
original: props.useOriginal,
})
if (typeof data === 'string') {