Fix video playback: calculate time from frame/fps when start_time/end_time not available

- Identity search returns start_frame/end_frame/fps instead of start_time/end_time
- Calculate start_time = start_frame / fps, end_time = end_frame / fps
- Apply same fix to universal search results
This commit is contained in:
OpenCode
2026-05-30 19:37:00 +08:00
parent 39b9fd7da8
commit ccfdfb2c20

View File

@@ -471,13 +471,15 @@ async function semanticSearch() {
const results = data.results || [];
resultsHtml = results.map(i => {
const textAttr = (i.text_content || '').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
const startTime = i.start_time || (i.start_frame && i.fps ? i.start_frame / i.fps : 0);
const endTime = i.end_time || (i.end_frame && i.fps ? i.end_frame / i.fps : startTime + 10);
return `<div class="chunk-item clickable"
data-file-uuid="${i.file_uuid}"
data-start-time="${i.start_time || 0}"
data-end-time="${i.end_time || (i.start_time || 0) + 10}"
data-start-time="${startTime}"
data-end-time="${endTime}"
data-text="${textAttr}">
<div style="font-weight: 600; color: #1e40af;">${i.name} (${i.source || 'unknown'})</div>
<div class="chunk-time">${i.file_uuid} | ${(i.start_time || 0).toFixed(1)}s - ${(i.end_time || (i.start_time || 0) + 10).toFixed(1)}s</div>
<div class="chunk-time">${i.file_uuid} | ${startTime.toFixed(1)}s - ${endTime.toFixed(1)}s</div>
<div style="margin-top: 4px;">${i.text_content || '無內容'}</div>
<button class="play-btn">▶ 播放片段</button>
</div>`;
@@ -494,12 +496,14 @@ async function semanticSearch() {
const results = data.results || [];
resultsHtml = results.map(r => {
const textAttr = (r.text || '').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
const startTime = r.start_time || (r.start_frame && r.fps ? r.start_frame / r.fps : 0);
const endTime = r.end_time || (r.end_frame && r.fps ? r.end_frame / r.fps : startTime + 10);
return `<div class="chunk-item clickable"
data-file-uuid="${r.file_uuid}"
data-start-time="${r.start_time || 0}"
data-end-time="${r.end_time || (r.start_time || 0) + 10}"
data-start-time="${startTime}"
data-end-time="${endTime}"
data-text="${textAttr}">
<div class="chunk-time">${r.file_uuid} | ${(r.start_time || 0).toFixed(1)}s - ${(r.end_time || (r.start_time || 0) + 10).toFixed(1)}s</div>
<div class="chunk-time">${r.file_uuid} | ${startTime.toFixed(1)}s - ${endTime.toFixed(1)}s</div>
<div style="margin-top: 4px;">${r.text || '無內容'}</div>
<div class="badge-status completed" style="margin-top: 4px;">相似度: ${(r.score * 100).toFixed(1)}%</div>
<button class="play-btn">▶ 播放片段</button>