Skip to content

Encoding_CN

blycr edited this page Feb 18, 2026 · 10 revisions

编码与转码支持 (Encoding & Transcoding)

MSP v0.9.0+ 引入了硬件加速转码支持,利用 GPU 编码器大幅提升转码速度并降低 CPU 占用。详见 硬件加速转码

播放策略:探测感知 + 直连优先

MSP 采用“探测感知 + 优先尝试 + 失败回退”的策略:

  1. 优先直连 (Try-First)

    • 默认先尝试原始流直连。
    • 优势:能直连时基本不占服务器 CPU,启动快、画质无损。
  2. 智能预判 (Probe-Aware)

    • AVI/WMV 等高风险容器,直接预转码,避免浏览器硬失败。
    • 其余格式默认先走直连,只有真实失败才自动回退转码。
    • WMV 原始流会带 video/x-ms-wmv 响应头,避免 MIME 识别不一致。
  3. 失败回退 (Fallback-Next)

    • 若直连失败,先做一次同源重试(刷新 ts)。
    • 仍失败且允许转码时,自动切到实时转码流。

实时转码 (Transcoding)

当浏览器无法播放时,MSP 会调用服务器上的 ffmpeg 进行实时转码。

前置要求

  1. 服务器必须安装 FFmpeg
  2. ffmpeg 命令必须在系统的 PATH 环境变量中(在终端输入 ffmpeg -version 能看到输出)。

转码特性

  • 视频: 自动转换为 H.264/AAC MP4 流。
  • 音频: 自动转换为 MP3 流。
  • 拖动进度条: 支持 (Smart Seeking)。
    • MSP v0.8.4+ 支持在转码流中拖动进度条。拖动后,服务器会从指定时间点重新生成流。

配置建议

为了获得最佳兼容性,强烈建议config.json 中开启转码功能:

{
  "playback": {
    "video": { "transcode": true },
    "audio": { "transcode": true }
  }
}

注:开启此选项不会导致所有视频都转码。常见 MP4(H.264/AAC) 仍优先直连,仅在高风险容器或真实失败时才转码。

常见问题

为什么我的 MKV 以前能直连,现在变成了转码?

这取决于 MKV 内部的编码。如果内部是 H.264,通常会直连。如果内部是 H.265 且浏览器不支持,就会自动转码。

转码时 CPU 占用很高?

是的,实时视频转码是非常消耗 CPU 的操作。MSP 默认限制了最大 2 个并发转码任务,以防止服务器卡死。

浏览器原生支持列表(供参考)

绝大多数现代浏览器(Chrome, Edge, Firefox, Safari)原生支持的编码如下:

  • 视频编码:
    • H.264 (AVC): 兼容性最好,几乎所有浏览器都支持。
    • VP8 / VP9: Google 推出的编码,兼容性很好。
    • H.265 (HEVC): 兼容性较差。通常需要硬件支持(如较新的显卡)以及浏览器扩展。
  • 音频编码:
    • AAC: 兼容性最好。
    • MP3: 兼容性很好。
    • Opus / Vorbis: 兼容性很好。
    • AC-3 (Dolby): 浏览器通常不支持。

Clone this wiki locally