AI探索.源码.模板

同一份 HTML,同时服务搜索、AI 答案与浏览器代理。

Switch to English

用 WebGPU 在设备端放大视频,把服务器成本降下来

  • 马川 媒体引擎
  • 邓秋 图形

发布时间:2026 年 4 月 2 日

把超分和滤镜放到 WebGPU(或 WebGL 回退)在设备端运行,服务器只分发压缩后的源视频。主线程禁止跑逐帧像素循环;用 Worker 做调度,页面在不支持 GPU 的浏览器上仍能播原始清晰度。

  • 250,000 月活播放
  • 10,000 每天处理视频
  • 30,000 每月处理时长
  • 0 $ 服务器处理费用

把每一路 4K 都在源站转出来,带宽和电费会随月活线性上涨。设备端超分让大多数用户看“够清晰”的画面,源站只保留一份高效编码。

服务器成本方面的挑战#

源站转码常占媒体预算的最大可变部分。每一路新清晰度都要占存储、CPU 和出口带宽。把“看起来更清晰”的工作移到用户设备后,源站只服务一份压缩流。

客户端推理是少数能把可变成本压到接近零的路径:模型在 GPU 上跑,画面不回传到超分 API。

使用 WebCodecs 和 WebGPU 进行客户端处理#

视频元素和字幕必须写在 HTML 里。WebGPU 不可用时播放原始流;可用时再把解码帧交给计算着色器。搜索引擎和 AI 抓取器看到的是带文字说明的页面,而不是空白 canvas。

流水线按解复用、解码、处理、编码、封装分段。每一段用 Streams 背压相连,编码变慢时解码自动减速,避免主线程被帧队列淹没。

源图像经过卷积层变成中间特征,再重建为放大后的输出图像
图示:设备端超分流水线。

请把 GPU 提交放进独立循环。用户点击播放或暂停必须在 200ms 内画出下一帧。第三方分析脚本延后到首次交互之后。

// Decode one frame, upscale on GPU, encode — never on the main thread.
async function enhance(frame, gpu) {
  const bitmap = await createImageBitmap(frame);
  const output = await gpu.render(bitmap);
  return new VideoFrame(output, { timestamp: frame.timestamp });
}

结果#

设备端处理后,转码集群不再随月活扩容。同一套 HTML 仍然能被抓取:指标、步骤和代码都在首份响应里,而不是等 JS 执行完才出现。

建议和资源#

先确认页面在关闭脚本时仍能阅读。再检测 WebGPU,失败就播原始流。功能检测失败必须有可播放回退;Googlebot 不保证有 WebGPU,正文不要只画在 canvas 里。

  • HTML 视频是核心功能,GPU 是增强。
  • 功能检测失败必须有可播放回退。
  • 把帧循环移出主线程,才能保住 INP。

该内容对您有帮助吗?

如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据Apache 2.0 许可获得了许可。插图为站点原创。

最后更新时间:2026-09-19。