Phase 1 of subtitle timeline studio. Upload a video in the rework editor →
proxy to Python /transcribe (faster-whisper) → store segments → render a
playback-synced segment list and export CapCut-importable SRT.
- ScriptSegment + SrtFormatter (pure, unit-tested) with speed rescaling
- ChannelVideoScript.segmentsJson column (ddl-auto adds it)
- ChannelService.transcribeFromFile + getSegments/parseSegments
- POST /{id}/transcribe (multipart), GET /{id}/script.srt?speed=, /script now returns segments
- rework.html: upload button, local <video>, segment list, SRT export + speed
- multipart 200MB limit; python.base-url config (PYTHON_BASE_URL)
- repo: findFirstByVideoIdOrderByIdDesc/findAllByVideoId (dedup-safe lookups)
Spec: docs/superpowers/specs/2026-06-12-subtitle-timeline-studio-design.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
9 lines
276 B
Java
9 lines
276 B
Java
package com.hlab.yanalyst.domain.channel;
|
|
|
|
/**
|
|
* 자막 한 구간(세그먼트). 영상과 싱크되는 시작/끝 시각(초)과 텍스트.
|
|
* Whisper 전사 결과 및 SRT 생성의 공통 단위.
|
|
*/
|
|
public record ScriptSegment(double start, double end, String text) {
|
|
}
|