deploy music / build-and-deploy (push) Canceled after 0s
deploy webgl / build-and-deploy (push) Canceled after 0s
deploy karaoke / build-and-deploy (push) Canceled after 0s
deploy articulate / build-and-deploy (push) Canceled after 0s
deploy cube / build-and-deploy (push) Canceled after 0s
deploy llm-proxy / build-and-deploy (push) Canceled after 0s
deploy notes / build-and-deploy (push) Canceled after 0s
deploy simpleasm / build-and-deploy (push) Canceled after 0s
deploy video2slides / build-and-deploy (push) Canceled after 0s
deploy werewolf / build-and-deploy (push) Canceled after 0s
deploy write / build-and-deploy (push) Canceled after 0s
- 不再上传视频:<video>+canvas 原生解码按时间戳 seek 抽帧,逐帧 256px 灰度 MAE 算差异,缩略图(320)+大图(1280) 随抽随写 IndexedDB,带进度条+ETA - 阈值/手动 保留弃用/缩放偏好 持久化到 IndexedDB,刷新仍在 - PDF 导出回到客户端 jsPDF,保留帧逐张 base64 嵌入、单帧处理防 OOM - 后端删光业务逻辑(core.rs/handlers.rs),main.rs 缩成 cube_core::base 静态服务 - 不再需要 ffmpeg → Dockerfile 回归 FROM scratch;k8s 去掉 hostPath 卷、降资源 - 真浏览器(Playwright)验证:抽帧/差异/阈值/持久化/导出 全通过
15 lines
750 B
Rust
15 lines
750 B
Rust
//! video2slides.famzheng.me — 长视频抽帧、逐帧差异、拖阈值挑关键画面/幻灯片。
|
|
//!
|
|
//! **纯客户端 app**:视频不上传,浏览器用 `<video>` + canvas 原生解码抽帧,
|
|
//! 逐帧差异、缩略图、PDF 导出全在前端,结果存 IndexedDB(每浏览器各自持久化)。
|
|
//!
|
|
//! 所以这里没有任何业务后端 —— 这个进程只是个静态文件服务器,把前端发出去。
|
|
//! `cube_core::base` 已经包含 healthz + 静态目录 + SPA fallback。
|
|
|
|
#[tokio::main]
|
|
async fn main() -> std::io::Result<()> {
|
|
cube_core::init_tracing();
|
|
let dist = std::env::var("VIDEO2SLIDES_DIST_DIR").unwrap_or_else(|_| "/dist".into());
|
|
cube_core::serve(cube_core::base(dist), 8080).await
|
|
}
|