Spaces:
Running
Running
Commit History
-
fix(sub): preview khớp 100% burn bằng render server (bỏ libass-wasm)
libass-wasm và ffmpeg dùng 2 BẢN libass khác phiên bản -> render KHÁC nhau (chữ bị rớt do bug fallback libass #460, khác font-hinting...). Không thể đảm bảo giống hệt bằng bộ vẽ thứ 2 trong trình duyệt. Cách chắc chắn = dùng CHÍNH ffmpeg/libass của bản burn để xem trước: - Bỏ hẳn libass-wasm (gỡ package + public/libass + endpoint /subtitle/ass). - Khi BẬT "Xem trước khớp 100%" + video TẠM DỪNG + không gõ/kéo -> tự gọi /subtitle/preview-frame render đúng khung tại thời điểm hiện tại (server ffmpeg) rồi đè ảnh lên video. Ảnh này = ĐÚNG video sẽ xuất. - Đang phát/gõ/kéo -> hiện CSS nhanh (mượt); dừng lại tự cập nhật khung chuẩn (debounce 350ms, chống race bằng frameSeq). - Giữ fix cỡ video = nội dung thật (bỏ letterbox) để ảnh đè khớp vùng video. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>4f9859d -
feat(sub): xem trước phụ đề KHỚP 100% bản burn (libass-wasm + render khung server)
Preview CSS chỉ 'bắt chước' libass -> không bao giờ giống hệt. Nay preview dùng CHÍNH libass, cùng ASS + font như bản burn: - Backend: tách build_ass_str (1 nguồn ASS cho burn/preview), thêm render_frame (render đúng 1 khung), 2 endpoint: /subtitle/ass (ASS cho libass-wasm), /subtitle/preview-frame (ảnh khớp 100% để đối chiếu). - FE (A) libass-wasm (SubtitlesOctopus): vẽ phụ đề THẬT đè video, real-time; nạp ASS từ backend (debounce), font từ /fonts. Toggle "Xem trước khớp 100%"; lỗi -> tự lùi về CSS. Ẩn lớp CSS khi libass bật (tránh chồng đôi); ẩn canvas khi đang gõ. - FE (B) nút "Xem trước chuẩn (ảnh)" -> gọi render 1 khung server. - Sửa lệch hình học gốc: cỡ hiển thị video = nội dung THẬT (bỏ letterbox ngang) nên overlay ánh xạ đúng toạ độ video (trước tính theo khung thẻ kèm viền đen). - worker/wasm libass để LFS (khớp *.wasm), HF chấp nhận. Đã kiểm: build FE pass; backend build_ass_str/render_frame ra ASS+khung đúng (highlight đúng thời điểm); libass-wasm nạp worker+was…d908e31
-
deploy merged code
9b53f70