简介
这篇内容给你一条可复用的 AI 提示词(Prompt),用于让 AI 直接生成一个可运行的在线工具:对 HLS(m3u8) / DASH(mpd) 播放清单做解析、规则校验与资源可用性探测,输出可下载的诊断报告(JSON/HTML),用于上线前自检与排障。
交付物
完整项目源码(含文件树、逐文件代码)、本地运行命令、Docker 部署说明、自动化测试用例、QA checklist。生成结果必须可构建/可部署,不是片段式示例。
覆盖场景
适合对转码后输出的多码率阶梯、音视频/字幕轨道、加密 KEY 引用、分片 URL 可达性、MPD 结构与分段模板等进行系统性体检,并给出可操作的修复建议。
AI 提示词 (Prompts)
你是一名资深全栈工程师+视频流媒体工程师,请一次性生成一个“在线 HLS/DASH 播放清单校验与诊断工具”的完整可运行项目。
目标
- 用户在网页中粘贴或上传:HLS 的 master.m3u8 / media.m3u8,或 DASH 的 manifest.mpd(也支持输入一个 URL)。
- 工具自动解析并做静态校验与可用性探测,最终输出可下载的诊断报告(JSON + HTML),并在页面里以表格/卡片展示。
必须交付物(务必给出真实可运行的源码,而不是伪代码)
- 完整项目代码 + 文件树(逐文件列出路径与内容)。
- 本地运行命令(含安装依赖、启动 dev、生产构建与启动)。
- Dockerfile + docker compose(可选)+ 一键运行说明。
- 最少 10 条自动化测试用例(单元+集成均可),覆盖解析、校验规则、边界输入。
- QA Checklist(至少 20 条),用于人工验证 UI 与报告一致性。
技术栈约束(可选其一,但必须自洽)
方案 A(推荐)
- 前端:Vite + React + Type
- 后端:Node.js + Fastify(或 Express)+ Type
- 解析:HLS 解析可用自己实现轻量 parser 或选用开源库;DASH MPD 用 解析。
- 网络探测:后端负责 HEAD/GET 探测分片/初始化段/字幕/音频等资源,支持并发与超时。
功能与规则(必须实现)
- 输入支持:
- 粘贴文本(m3u8 或 mpd 原文)
- 上传文件(.m3u8/.mpd)
- 输入 URL(后端拉取,支持重定向,限制最大体积与域名白名单/黑名单配置)
- HLS 校验:
- 语法与标签合法性(#EXTM3U、#EXT-X-VERSION、#EXT-X-TARGETDURATION、#EXTINF 等)
- master 与 media 的引用链:master -> variant playlists -> segments
- 码率阶梯检查:同一内容的各档位 BANDWIDTH/AVERAGE-BANDWIDTH 是否单调递增,分辨率是否合理,帧率差异提示
- 音视频轨道与字幕:#EXT-X-MEDIA 组引用一致性(GROUP-ID / NAME / LANGUAGE / DEFAULT / AUTOSELECT)
- 段时长与 TARGETDURATION 关系、空段、异常长段提示
- 加密:#EXT-X-KEY 检查(METHOD、URI、IV),可用性探测(不解密也要能判断 URI 可访问)
- DASH 校验:
- MPD 基本合法性、Profile/Type/MinimumUpdatePeriod 等字段检查
- Period/AdaptationSet/Representation 结构完整性
- SegmentTemplate/SegmentList/Segment 三种路径至少支持两种
- 多 Representation 的码率阶梯、分辨率、帧率一致性检查
- init segment / media segment URL 可用性探测(拼接 URL 与模板变量)
- 可用性探测:
- 并发探测(例如 10 并发,可配置),超时(例如 8s),重试 1 次
- 记录 HTTP 状态码、最终 URL、Content-Type、Content-Length
- 对“疑似跨域/403/鉴权”的情况给出提示,不要试图绕过鉴权
- 报告输出:
- UI 中分级展示:ERROR / WARN / INFO
- 每条问题给出:定位(行号/标签/节点路径)、原因、影响、修复建议
- 支持下载:report.json 与 report.html
- 在报告中生成“摘要概览”(问题数、关键问题、建议优先级)
工程与安全要求(必须实现)
- 输入大小限制(例如 2MB),防止大文件拖垮服务
- SSRF 防护:URL 拉取必须做协议限制(http/https)、内网网段禁止、DNS 解析校验与重定向限制
- 速率限制:对探测接口加简单 rate limit
- 日志:请求 ID、耗时、错误栈;不要记录用户上传的原文内容
UI 要求(必须实现)
- 单页应用:左侧输入区(粘贴/上传/URL 三种 tab),右侧结果区(概览 + 分组列表)
- 结果支持过滤(只看 ERROR/WARN)、搜索(按 URL/标签/文本)
- 一键复制“修复建议摘要”到剪贴板
输出格式(必须严格遵守)
- 先给出一段“项目简介”(不超过 120 字)
- 再给出“文件树”(tree 形式)
- 然后按文件路径逐个输出代码块(确保能直接落盘运行)
- 最后给出运行命令、Docker 部署、测试命令、QA Checklist
请直接开始输出项目,不要反问。
使用方式
将上面的 Prompt 原样复制给 AI,并补充你自己的约束(例如必须使用某个内网仓库、指定 Node 版本、或希望前端使用 Vue)。得到项目后,建议先按 README 本地跑通,再按 Docker 部署到测试环境,最后用真实的 m3u8/mpd 样例做回归。
验收要点
验收时重点看三件事:解析是否完整(能还原引用链)、规则提示是否可定位(带行号/节点路径)、探测是否可控(并发/超时/重试/SSRF 防护都落地)。报告应能一键下载并复现问题。