Emby 转码不触发排查 — 为什么好好的文件就是要转码
排查的四个维度
Emby 做兼容性检查时按这个顺序判断是否需要转码:
- 比特率匹配吗? → 文件码率 > 客户端 Max streaming bitrate → 转码
- 视频编码支持吗? → HEVC/H.265 在某些老设备上不支持 → 转码
- 音频编码支持吗? → DTS / DTS-HD / TrueHD 在 iOS / Apple TV 上不支持 → 转码
- 字幕格式支持吗? → PGS 蓝光字幕在 Web Client / 某些客户端上需要转码烧录 → 转码
按这个顺序检查,大概率能在第三项之前找到原因。
第一步:确认文件的实际编码信息
用 MediaInfo(免费跨平台工具)或 Emby 内置的 Media Info:
Emby 内置:
- Web Client 或 Android TV 客户端里找到那个视频
- 详情页下拉到底部 → Media Info(或类似入口)
- 能看到完整的视频/音频/字幕编码信息

记下:
- 视频编码:H.264 / HEVC/H.265 / VP9 / AV1 …
- 音频编码:AAC / AC3 / DTS / DTS-HD MA / TrueHD / FLAC …
- 容器格式:MP4 / MKV / AVI …
- 平均码率:比如 40 Mbps
第二步:和客户端能力交叉对比
常见客户端的编码支持
| 客户端 | H.264 | HEVC/H.265 | VP9 | AAC | AC3/DTS | DTS-HD/TrueHD | MKV 容器 | PGS 字幕 |
|---|---|---|---|---|---|---|---|---|
| Android TV(现代盒子) | ✅ | ✅(大多支持) | ✅ | ✅ | ✅ DTS 有时需转码 | ❌ 需转码 | ✅ | ✅ |
| Apple TV 4K | ✅ | ✅ | ✅ | ✅ | ❌ DTS 不支持 | ❌ 需转码 | ⚠️ 需 Direct Stream | ⚠️ 需转码 |
| iOS / iPad | ✅ | ✅ | ❌ | ✅ | ❌ DTS 不支持 | ❌ 需转码 | ❌ 需 Direct Stream | ❌ 需转码 |
| Web Client(Chrome) | ✅ | ✅ | ✅ | ✅ | ⚠️ 有限 | ❌ 需转码 | ❌ 需 Direct Stream | ❌ 需转码 |
| Fire TV Stick | ✅ | ✅(新机型) | ✅ | ✅ | ✅ | ❌ 需转码 | ✅ | ✅ |
| Windows Theater | ✅ | ✅ | ✅ | ✅ | ✅ | ✅(需系统编解码包) | ✅ | ✅ |
⚠️ 以上为通用情况,不同机型/系统版本可能有差异。Apple TV 4K 2 代起 HEVC 支持更好。
最常见的转码触发场景
- DTS 音轨 + iOS/Apple TV → 音频强制转 AAC(苹果生态不支持 DTS)
- HEVC 视频 + 老款 Android TV 盒子 → 视频强制转 H.264(老机型无 HEVC 硬解)
- PGS 蓝光字幕 + Web Client → 字幕需要烧录进画面(浏览器没有原生 PGS 支持)
- MKV 容器 + iOS → 容器重封装(Direct Stream,不是真转码,但如果转码设置有冲突也可能硬转)
- 高码率原盘 + 远程访问带宽不够 → 视频强制降码率
第三步:Server 端日志确认
如果客户端端信息不明确,可以看 Emby Server 的转码日志:
Dashboard → Help → Logs → 在日志里搜索那个文件的名字,会看到类似:
[Transcode] Audio codec DTS not supported by client, transcoding to AAC
[Transcode] Video codec HEVC not supported by client, transcoding to H264
[Transcode] Subtitle codec pgs requires burn-in, transcoding required
[Transcode] Media bitrate 60 Mbps exceeds client setting 25 Mbps
日志会明确告诉你为什么转码。
第四步:解决办法
找到原因后,按下面的对策解决:
对策一:客户端设置里强制硬解
某些客户端有 "Force Direct Play" 或 "Force Transcoding for specific formats" 的设置:
- Android TV:Settings → Playback → Force Transcoding for formats → 如果 EAC3 等格式不支持,勾上让它强制转码(这是被动接受转码,但保证能播)
- 如果想强制 Direct Play,看客户端有没有 "Allow Direct Play" 的开关,确认没被关掉
对策二:统一转码媒体库(最彻底)
如果很多文件都在转码,最彻底的方案是把媒体库统一转成最保守的格式:
视频:H.264 / HEVC(客户端都支持的编码)
音频:AAC 或 AC3(Dolby Digital)—— 所有平台原生支持
容器:MP4(最通用的容器)
字幕:SRT(文字型,所有客户端都支持)
用 HandBrake(免费跨平台)批量转换:
# 批量把一个目录里的所有 MKV 转成 MP4 + AAC
HandBrakeCLI -i /path/to/Movies -o /path/to/Movies-new \
--preset "Fast 1080p30" \
--encoder x264 \
--mixdown stereo \
--audio aac
转换完成后删掉旧库重建新库即可。
对策三:强制某个格式 Direct Play
Emby Server Dashboard → Advanced → Playback → Transcoding 里可以加规则:
- Don't transcode if output container is:添加你希望保持原样的容器(比如 MKV)
- Only allow the following video codecs to be direct played:可以排除不希望直接播的编码
这个高级功能需要 Premiere。
对策四:用 Direct Stream 代替转码
Direct Stream 是"不改变视频音频编码,只换容器",几乎零资源。如果你的文件是 MKV + H.264 + AAC,iOS 客户端不支持 MKV 但支持 H.264 + AAC,Emby 会自动 Direct Stream(重封装成 MP4 流),不会真转码。
如果观察到是 Direct Stream 而不是 Transcode,不用担心——这是正常且高效的行为。
报告 Bug
如果一切检查过了文件应该 Direct Play 但还是在转码,可以去 Emby 社区论坛报告,附上:
- Media Info 截图
- 转码日志片段(Dashboard → Help → Logs)
- Emby Server 版本号
- Emby 客户端名称和版本
- 客户端平台和系统版本
社区开发者通常能快速定位问题。