FlixMedia · 播放
转码
放不了的格式转成 HLS,HDR 色调映射、字幕烧录和核显加速。
浏览器或播放器放不了的格式(MKV 里的某些音轨、HEVC、DTS / TrueHD 等)由服务器转成 HLS:H.264 + AAC 双声道,6 秒一段,按需生成。
网页播放器
- 检测到格式放不了会自动走转码;原画能直接播放的(mp4 + H.264 + AAC 等)不转码。
- 播放器上的「⚙ 音轨 / 字幕 / 画质」菜单:
- 音轨:列出视频里所有音轨,换音轨会用服务器转码(浏览器没法切 MKV 里的音轨)。
- 字幕:文本字幕(外挂的和内嵌的 srt / ass)用
<track>显示,不占转码;图形字幕(PGS / VobSub)只能烧录进画面,会转码。内嵌字幕第一次加载要把字幕从视频里提取出来(要读完整个文件,网盘上的大文件会比较慢),提取结果会缓存。 - 画质:原画(尽量直接播放)/ 1080p / 720p / 480p,不放大,不超过设置里的上限。
转码本身
- HDR → SDR 色调映射:HDR 片源转码时自动做色调映射,颜色不发灰。核显用
tonemap_vaapi,CPU 用 zscale + tonemap(先缩放再映射,4K 源也不至于太慢)。设置里可以关掉。 - 字幕烧录:外挂字幕 / 内嵌文本字幕 / 内嵌图形字幕都能烧录;烧录时用 CPU 转码,保证字幕和画面的时间线对齐。Emby 客户端要求「编码进画面」或选了图形字幕时才会烧录。
- 硬件加速:默认「自动」,有
/dev/dri/renderD128就用 VAAPI。某部片核显转码失败(例如 HDR 片源缺少母版显示元数据时tonemap_vaapi会失败)自动改用 CPU,且这部片之后都用 CPU;好几部不同的片都失败时,30 分钟内整个服务不再用核显。 - 会话管理:一个播放会话对应一个持续运行的 ffmpeg,往后连续转;领先播放位置 10 段就暂停(不白白转完整部),拖到很远的位置时从新位置重启,播放器停止请求两分钟后结束。同一部片换音轨 / 画质 / 字幕时,旧会话立刻让位;名额满了会让给最久没有请求的会话。
- 并发上限:设置里的「同时转码路数」,超出返回 503。
- Emby 客户端:只有客户端在 PlaybackInfo 里明确不要直接播放(
EnableDirectPlay=false)时才返回转码地址,所以 Infuse 等能直接播放的播放器始终拿到原文件。转码地址会带上客户端选的音轨(AudioStreamIndex)、画质(MaxHeight)和烧录字幕。 - 片源读取失败(网盘限频、文件不存在)时,该会话 60 秒内不再起 ffmpeg,避免播放器自动重试时继续冲击网盘。
音乐转码
浏览器放不了的音频格式(APE、WMA、DSD、AIFF…)或请求里带 transcode=1 时,边转边播 MP3(默认 192kbps,AudioBitRate 可调)。流式输出,不支持拖动。网页播放条遇到放不了的格式会自动重试转码。