用 Vue+Express 搭直播:AI 实时字幕与自动化入口

人工智能在媒体与内容产业By 3L3C

用 Vue+Express 搭建可控入口的直播应用骨架,并把 Deepgram 实时字幕作为自动化工作流起点,沉淀可检索可运营的内容资产。

Vue3ExpressLive StreamingAI字幕Deepgram前端架构内容自动化
Share:

Featured image for 用 Vue+Express 搭直播:AI 实时字幕与自动化入口

用 Vue+Express 搭直播:AI 实时字幕与自动化入口

直播不是“开个推流地址就完事”。真正让直播变成业务能力的,是可控的访问入口可复用的前端结构、以及能被嵌入工作流的 AI 能力(比如实时字幕、质检、内容标签、检索)。

我见过不少团队把直播做成“一次性活动页”:一个播放器、一个链接、一个临时口令。活动当天勉强能跑,活动结束后内容散落在各处,字幕和回放剪辑全靠人力补。更糟的是,入口校验写在前端,任何人打开 DevTools 都能把“秘密口令”扒出来。

这篇文章把 Deepgram 的教程思路(Vue 3 + Vue Router + Vuex + Express)改写成一个更贴近业务的案例:为小团队搭一个可扩展的直播 Web 应用骨架,把“访问控制 + AI 实时字幕”当作自动化工作流的一部分,放进「人工智能在媒体与内容产业」系列的叙事里:内容生产、分发、审核与再利用,不应该全靠手工。


先把业务问题讲清楚:直播需要“可运营的结构”

要点很直接:**直播应用的最低可运营形态(MVO)**至少包含两件事——

  1. 受控入口:你得决定谁能进来、什么时候能进来、进来后能看到什么。
  2. 可沉淀内容:直播产生的不只是视频流,还有语音内容。把语音转成文字,你才有后续的内容推荐、用户画像、内容审核、搜索与剪辑。

Deepgram 原文的重点是工程搭建:用 Vue 3 做前端结构,用 Vue Router 做路由与导航守卫,用 Vuex 管“允许访问”的状态,再用 Express 做后端接口,把秘密口令放到 .env 里。

从媒体与内容产业的角度看,这套结构的价值在于:把 AI 能力(实时字幕)放在一个可控的业务流程里

一句话总结:播放器只是展示层;路由守卫、状态管理和后端接口,才是把直播接入业务工作流的“骨架”。


前端骨架:Vue Router + 导航守卫,把入口“关上”

要点先给结论:用 Vue Router 的 beforeEnter 导航守卫,你可以在路由层强制执行访问规则。这比在组件里做“按钮禁用”靠谱得多,因为用户直接输入 URL 也会触发守卫。

在这个案例里,我们有两个页面:

  • /:EnterCode(输入口令的落地页)
  • /stream-channel:StreamChannel(直播播放与字幕页)

为什么导航守卫是直播应用的关键点

直播的常见业务场景包括:

  • 付费会员场(口令/一次性码/登录态)
  • 内部培训(只开放给员工或指定部门)
  • 发布会媒体场(不同人群不同画面或不同延迟策略)

你可以先从“口令”开始,但别把口令写在前端。正确做法是:前端只负责收集输入与跳转;校验逻辑放在后端。

一个实用的守卫策略(比 demo 更像生产)

原文用 Vuex 的 allowAccess 控制能否进入 /stream-channel。你可以沿用这个结构,但建议加两个改进:

  • allowAccess 替换成带过期时间的 token 状态(哪怕是简化版),避免用户打开一次后永久可进。
  • 把 alert 改成 UI 提示(toast/inline error),避免打断式体验。

路由层的逻辑像这样:

  • store.state.allowAccess === true:放行
  • 否则:重定向到 EnterCode

这一步解决的是“入口管控”。下一步才是“怎么安全地验证口令”。


状态管理:Vuex 不只是“存个变量”,它是流程开关

结论先说:在直播业务里,Vuex(或 Pinia)最常用的价值不是复杂数据流,而是把“流程节点”变成可测试、可追踪的状态机

原文用 Vuex 实现了经典流转:

  1. 组件 dispatch action
  2. action commit mutation
  3. mutation 修改 state.allowAccess

这在 demo 里看起来有点“杀鸡用牛刀”,但一旦你要接入 AI 实时字幕和内容自动化,它就变得非常必要。

把“允许访问”当作工作流的第一道闸

我建议把 allowAccess 视为工作流的第一道闸门,后续可以串更多自动化能力,例如:

  • 进入频道后自动申请“字幕服务临时密钥”(后端签发)
  • 自动启动麦克风捕获(用户授权后)
  • 自动把字幕片段按 30 秒/1 分钟切片,发到后端做摘要与标签

当你开始做这些时,如果没有统一的状态管理,你会在组件间传 props 传到崩溃。


后端接口:Express + .env,把秘密留在服务器

结论很明确:任何“秘密口令/第三方 API key/签名密钥”都不应该出现在前端代码里。把它们放进 .env,用 Express 提供校验接口。

原文提供了一个 /secret-code 的 POST 端点:

  • 前端把用户输入发过来
  • 后端与 process.env.SECRET_CODE 比对
  • 返回 “Correct code” 或 “Incorrect code”

把 demo 升级成更安全、更像业务的做法

如果你要把这个应用真的用在客户场景里,我建议至少做到:

  1. 返回结构化 JSON,别返回字符串
    • 例如 { ok: true, reason: null }
  2. 失败返回 401/403,别总是 200
    • 这样前端和监控更清晰
  3. 加上简单的速率限制与日志(防暴力猜码)
  4. 口令最好是一次性码或短期码,避免泄露后长期可用

这些都不复杂,但能把“教程项目”拉到“可交付项目”的及格线。


把 Deepgram 放进自动化工作流:实时字幕只是起点

这篇 RSS 的下一步(系列后续)会把 Deepgram token 端点加进来,并在频道页实现字幕组件。这里先把“媒体与内容产业”的核心价值讲透:实时字幕不是为了好看,是为了把直播变成可计算的内容资产

为什么 AI 实时字幕会直接影响增长与运营

几个非常现实的收益:

  • 无障碍与合规:字幕提升可访问性;在不少地区/行业是硬要求。
  • 内容再利用:字幕文本可以自动生成摘要、时间轴亮点、短视频脚本。
  • 内容审核与风控:把敏感词、违规表述、品牌禁词做实时/准实时检测。
  • 内容推荐与检索:文本是搜索与推荐系统的燃料,视频本身很难直接检索。

直播的 ROI 往往不在“直播当下”,而在直播之后的分发、剪辑与复盘。字幕让这些自动化成为可能。

一个小团队可落地的“字幕自动化流水线”(建议版)

你可以在现有架构上扩展出这样一条链路:

  1. 用户通过受控入口进入频道(Vue Router Guard + Vuex)
  2. 前端请求后端签发 Deepgram 临时 token(避免暴露主 key)
  3. 前端把音频流送到 Deepgram(WebSocket/SDK)
  4. 字幕片段写入后端(按时间切片存储)
  5. 自动生成
    • 直播摘要(用于落地页/公众号)
    • 章节与时间轴(用于回放导航)
    • 关键词/话题标签(用于内容推荐与用户画像)

这就是“AI 语音助手与自动化工作流”的典型模式:机器处理重复劳动,人只做决策与审核。


常见问题(团队最容易踩的坑)

1) 只用前端校验口令行不行?

不行。前端代码对用户完全透明,口令会被直接看到。正确做法是:后端校验 + .env 管理密钥

2) Vuex 有必要吗?Pinia 更轻?

如果是新项目,我个人更偏向 Pinia;但在“教程迁移/团队已有栈”的情况下,Vuex 依然可用。关键不是库,而是你要有一个清晰的状态边界(访问态、token、字幕连接态、错误态)。

3) CORS、端口、开发环境怎么处理更省心?

开发期前后端分端口很常见。建议配一个代理(devServer proxy)或统一用同域反向代理,减少 CORS 复杂度。原文用 cors() 中间件是最直观的起步。


你现在可以做的下一步

如果你正在做直播、在线培训、发布会或任何“内容型业务”,我建议按这个顺序推进:

  1. 先把 Vue 的两页结构搭起来(入口页 + 频道页)
  2. 用 Router Guard 把入口锁住(别靠 UI)
  3. 用 Express 把口令与 token 管起来(.env
  4. 接入 Deepgram 字幕,把字幕存下来(别只显示在页面上)
  5. 把字幕接到后续自动化:摘要、标签、检索、审核

直播应用的竞争力,越来越像“内容系统的能力”而不是“播放器的能力”。当你的字幕、标签、摘要、审核都能自动跑起来,内容团队的时间会被释放出来,去做更值钱的事:选题、叙事、分发策略和增长实验。

下一个更值得思考的问题是:当字幕和内容标签实时生成后,你的产品要如何把它们变成可运营的功能?

🇨🇳 用 Vue+Express 搭直播:AI 实时字幕与自动化入口 - China | 3L3C