Emby 串流播放原理 — Direct Play、Direct Stream、Transcode 三种模式
三种播放模式
Emby 在收到客户端的播放请求后,会先做一轮兼容性检查,然后选择最优的播放方式。三种模式按理想程度排序:
| 模式 | CPU 占用 | 画质损失 | 何时触发 |
|---|---|---|---|
| Direct Play | 零 | 无 | 最理想。文件格式/编码/码率客户端原生支持 + 带宽足够 |
| Direct Stream | 几乎零 | 几乎无 | 只有容器格式需要改(比如 MKV → MP4),视频/音频编码不变 |
| Transcode | 高 | 可能有 | 编码不支持、码率过高、需要转音频格式、要加字幕等 |
Direct Play(直播)
这是你想要的模式。Emby Server 只把文件数据从磁盘读取出来通过网络发给客户端,不做任何处理。客户端自己解码播放。
触发条件:
- 视频编码是客户端原生支持的(H.264、H.265/HEVC、AV1 等)
- 音频编码客户端支持(AAC、AC3、FLAC、DTS 等——注意 DTS 在很多移动端不原生支持)
- 容器格式客户端能打开(MP4、MKV 通用;某些平台对 MKV 支持不好)
- 文件码率 ≤ 客户端设置的 Max streaming bitrate
- 如果要显示字幕:字幕格式客户端能原生 overlay(SRT/VTT 大部分支持;PGS/VobSub 大多不支持)
Direct Stream(微调直播)
容器格式需要改,但视频和音频编码保持不变。常见场景:
- 客户端不支持 MKV 容器但支持 MKV 里面的 H.264 + AAC → Emby 把 MKV 重封装成 MP4 流,视频音频比特流一字不动
- 服务器快速跳过重封装,几乎零 CPU 开销
Transcode(实时转码)
资源消耗最大的模式。Emby Server 用 ffmpeg + 硬件加速/软解把视频重新编码成客户端能播的格式。常见触发场景:
- H.265/HEVC 视频 + 老款设备(不支持 HEVC 硬解)→ 转成 H.264
- DTS-HD Master Audio 音轨 + iOS 设备(不支持 DTS)→ 转成 AAC
- 文件码率 80Mbps + 远程网络带宽 20Mbps → 降码率到 20Mbps
- 想在 Web Client 里显示 PGS 蓝光字幕 → 字幕烧录进画面(需要转码)
- 强制转码(Force Transcoding)开关打开时
为什么要搞转码
一句话:文件和客户端/网络对不上的时候,转码让它们对上。
举个具体的例子:你有一部 4K HEVC 编码、码率 60Mbps 的电影,在公司用手机(iOS,只支持 H.264 硬解 + 4G 带宽 15Mbps)看:
- 视频编码不支持 HEVC → 必须转码成 H.264
- 码率 60Mbps > 4G 带宽 15Mbps → 必须降码率
- 结果:Emby Server 硬件转码成 H.264 + 15Mbps,你手机流畅看,但画质比原片损失了不少
怎么看当前播放是哪种模式
Web Client 或 Android TV 客户端 播放时:
- 点播放界面右下角的播放图标 → 选择 Playback Settings(或客户端的类似入口)
- 里面能看到:Media Info → Playback Method(Direct Play / Direct Stream / Transcode)
- 还能看到当前视频/音频的实时编码格式和码率
也可以在 Server Dashboard 看实时活动:Home → Active Sessions → 点击正在播放的会话 → 展开 Details,里面有:
- PlayState(Playing / Paused)
- Method(Direct Play / Transcode / Direct Stream)
- 视频/音频编码、分辨率、码率

怎么尽量多 Direct Play
这是优化播放体验的核心目标——Direct Play = 不转码 = Server 零压力 = 画质最完整。
策略一:统一媒体库的编码格式
全部转成 H.264 + AAC + MP4 容器。这是"最保守"的格式,所有 Emby 客户端(包括最老的)都原生支持。你在 Web Client 里还能开视频 + 软字幕一起 Direct Play,因为 AAC 支持 PGS 字幕 overlay。
如果不想全转成 H.264(4K 片源体积大很多),至少把音频统一成 AAC 或 AC3(Dolby Digital)——这两个在几乎所有平台都原生支持。
策略二:合理设置客户端比特率
Emby 客户端的 Max streaming bitrate 设置很重要:
| 使用场景 | 推荐设置 |
|---|---|
| 局域网千兆 | 100Mbps 或 Unlimited |
| 局域网百兆 | 40~50Mbps |
| 远程访问(4G) | 5~10Mbps |
| 远程访问(家庭宽带) | 20~30Mbps |
如果文件码率高于这个设置,Emby 会强制降码率转码。设太高网络扛不住会缓冲;设太低浪费了好画质。
策略三:远程访问用 Emby Connect
Emby Connect 会根据你的网络情况自动选择最优的连接方式(P2P 直连优先,不行再中继)。局域网内 Emby 会自动检测,自动用高码率;远程自动降码率。
策略四:开硬件加速
即使还是要转码,硬件转码比软解快 5~10 倍、CPU 占用低很多。详见 硬件加速转码。
转码触发排查清单
文件明明客户端应该能播但还是在转码?按顺序查:
- 比特率够不够?客户端设的 Max streaming bitrate 和文件实际码率对比
- 视频编码?H.265/HEVC 在很多 Android TV 盒子上能硬解,但在老款上不行
- 音频编码?DTS 在 iOS / Apple TV 上不支持,强制转码
- 字幕格式?PGS/VobSub 会触发转码
- 客户端"强制转码"开关?某些客户端有 "Force Transcoding for formats" 选项
- 容器格式?MKV 某些平台上会被 Direct Stream(重封装)或强制转码