## 项目经验(个人自研项目)
### 项目一:星视网 —— 传统风格视频网站
**项目简介**:经典风格的视频网站,含首页(轮播推荐 / 分类筛选 / 搜索 / 最近观看 / 我的收藏)、播放页(HTML5 播放器 / 评论 / 点赞 / 收藏 / 相关推荐)、登录注册、后台管理(数据概览 / 视频增删改 / 用户管理)。纯前端 + 自研视频服务器实现,无需安装依赖、无需数据库。
**技术栈**:原生 HTML / CSS / JavaScript、localStorage 数据层、SVG 占位封面生成、Python(`http.server`)自研支持 HTTP Range 的静态文件服务器、ffmpeg 批量视频优化
**擅长场景**:纯前端网站 / 播放器交互 / 本地化资源适配 / 自建静态服务
**职责与亮点**:
- 从 0 搭建完整页面体系与数据层,统一封装 localStorage 读写,实现数据版本迁移(升级示例数据时保留用户 / 收藏 / 历史 / 评论)
- 实现自定义 HTML5 播放器控制栏:可点击 / 拖动的进度条、播放 / 暂停、静音、全屏、加载失败提示
- 实现「播放本地视频」功能:浏览器直读本地文件(object URL),无需服务器落盘即可快进
- 实现完整用户系统与权限守卫(普通用户 / 管理员),后台管理视频与用户
- 编写 ffmpeg 批量优化脚本,14 个本地视频全部完成 faststart 转封装
**解决的关键问题**:
- **视频点进度条从头重播**:实测定位根因是 `python -m http.server` 不支持 HTTP Range 范围请求(请求 1KB 竟返回完整文件 200),自研静态文件服务器正确处理 `Range` 头、返回 206 分段响应,实现任意位置快进
- **ffmpeg 转封装报错**:临时输出文件扩展名必须为 `.mp4`(`.tmp` 会报 Invalid argument);mkv 需转封装为 mp4 且保留原件,写入优化脚本固化
- **国内无法下载 ffmpeg**:winget / GitHub 均被墙,改从 gyan.dev 下载并配置
- **示例视频源国内不可达**:Google CDN 无法访问,替换为国内可访问的开源测试资源(media.w3.org / vjs.zencdn.net / MDN),并养成了"新增源先测连通性"的习惯
- **封面缺失 / 断网可用**:无封面视频本地生成 SVG 占位图,界面不依赖外网图片
---
### 项目二:SubGen —— AI 视频字幕翻译工具(Whisper + LLM + ffmpeg)
**项目简介**:自动识别视频语音 → 翻译成目标语言 → 生成字幕并直接烧录进视频的本地网页工具。全程本机处理,视频不上传任何服务器,适合处理涉密 / 长视频素材。
**技术栈**:Python、Flask、faster-whisper(CPU int8 语音识别,带时间戳)、LLM 翻译(Anthropic 兼容接口,实际接入 DeepSeek)、ffmpeg(音轨提取 + ASS 字幕烧录)、edge-tts(测试视频生成)、原生 JS 前端
**擅长场景**:AI 应用落地 / 语音识别 / LLM 集成 / 音视频处理 / 公网部署
**职责与亮点**:
- 搭建完整处理流水线:ffmpeg 提取音轨 → faster-whisper 带时间戳听写 → LLM 翻译 → 生成 `.srt` → ffmpeg 烧录字幕,全流程进度上报 + 可取消
- **翻译质量优化**:整段字幕带时间戳一次性喂给 LLM(上下文喂法),而非逐句翻译;支持自动提取术语表
- **长视频分块翻译**架构:每块 ≤120 行,术语表一趟 + 相邻块末尾 2 行上下文传递,单块失败保留原文并累计告警
- **字幕后处理**:按目标语言阅读时长自动拆分长行、合并短行(CJK 按字符、西文按单词),修正时间轴错位
- 多档 Whisper 模型本地化(small / medium / large-v3),识别 16 种语言
frp 隧道 + Nginx 公网穿透,nssm 服务自启