离线下载与码率自适应
前几篇讲的都是在线播放。这一篇补上两个让影音中心真正融入日常的能力:把内容带走(离线下载),让画质跟着网络走(码率自适应)。前者解决地铁与飞机上的观看需求,后者解决家里网络忽快忽慢时的体验波动。两者都依赖服务端与客户端的配合,理解机制后调起来才有方向。
先说说为什么这两个功能值得单独成篇。离线与自适应看似是两个小设置,实际是家庭影音从「窝在沙发上的娱乐」变成「随时随地的生活方式」的关键。没有它们,影音中心只在家里有用;有了它们,通勤、出差、回老家过节都能延续同一套观看体验。这份长远价值的投入产出比远高于折腾其他花哨功能。
离线下载是什么
离线下载是把媒体文件或转码后的版本存到客户端本地,播放时完全不依赖网络。这里的关键词是「或转码后的版本」——离线下载有两种形态,区别决定了下载的速度与设备占用。
| 下载形态 | 文件来源 | 服务器负担 | 适用场景 |
|---|---|---|---|
| 原始文件下载 | 直接复制源文件 | 仅传输带宽 | |
| 转码后下载 | 服务器先转码再传输 | 转码加带宽 | |
| 选择依据 | 设备是否支持原格式 | 转码耗时不耗带宽 |

原始文件下载最理想:服务器只当文件服务器用,下载一部 4GB 的电影在千兆内网里就是几十秒的事,之后手机飞行模式照常播放。转码后下载发生在设备不支持原格式时,服务器需要先把整部片转完再传,耗时以分钟计,但换来的同样是零网络依赖的本地播放。
下载前怎么判断会走哪条路径?客户端的下载按钮旁通常会标注文件大小与画质档位。看到画质档位等同于原文件信息(比如源是 1080P、下载也标着 1080P 原始)就是直接复制;标注着低于源画质的档位则意味着转码。心里有数后,给老人孩子的设备批量操作时就不会因为等待时间超出预期而着急。
移动客户端的离线设置
移动端是离线下载的主战场。设置里值得关注的几项:
| 设置项 | 作用 | 建议 |
|---|---|---|
| 下载位置 | 本地存储或外置卡 | 空间紧张的用外置卡 |
| 默认画质 | 下载时的转码目标 | 内网用原始,外出用降档 |
| 自动下载规则 | 新内容自动到本地 | 追更剧集可开 |
| 存储上限 | 防止占满设备 | 按设备容量设 |
| 网络限制 | 仅 Wi-Fi 下载 | 流量敏感必开 |
自动下载是追更场景的利器:订阅的剧集有新集时自动下载到本地,早通勤直接看,全程无感。代价是设备存储被稳定占用,给上限设个明确数值,比如保留最近五集,老的自动让位。这个数值与每集体积相关,追的剧集若是高清长篇,五集就占掉手机十几 GB,设上限前先估算一次。
另一个小技巧是优先下载音频内容。有声书与音乐的体积小得多,一部 2GB 的电影换成 200MB 的有声书,同样一块存储能带走十倍的内容量。通勤路上以听为主的人,离线策略的重心放在音乐与有声书库上是更划算的选择。
Premiere 用户在移动端的功能完整度上占优,这与 em-0105 的账本一致。免费用户也能下载,但部分客户端有播放限制,出行前先在家测试一次完整流程,别等上了飞机才发现看不了。
下载的权限细节顺带一提。下载的内容与账号绑定,孩子的账号下载的影片在另一个账号上看不到,这是设计而非 bug。家里多人下载同一批内容时各自占各自设备的存储,服务端不重复转码——同一部内容的转码结果会被服务端缓存复用,第二个家人下载时快得多,这个机制足够贴心。
离线内容的同步细节
离线下载最容易出问题的环节有两个。一是进度同步:离线看完一集后,联网时进度是否回传服务端。正常情况下客户端会在恢复网络后同步,长时间不联网的设备要先开一会儿应用让它完成上报,直接在网页端看进度可能暂时显示旧值。
二是下载内容的服务端有效期。某些配置下,服务端条目被删除或媒体库重新整理后,本地下载的关联会失效,表现为本地文件还在但播不了。这不算数据丢失,重新从媒体库发起一次下载即可恢复。遇到过一次后你就知道要先在客户端刷新一下库存再出门。
码率自适应的工作机制
码率自适应是服务端与客户端协商播放画质的过程。客户端报告自己的网络能力与屏幕,服务端据此决定直接播放、转码到什么码率。理解这个链条后,卡顿与画质问题都能自己定位。
这套机制最值得称道的地方是激进与保守之间的平衡。自适应不是你追我赶的实时调整——频繁切换画质会让画面忽清晰忽模糊,反而更难看。服务端倾向于在播放开始时选定一个档位,只在出现持续卡顿时才降档,网络恢复后也通常不会主动升档。这决定了它的调优是「调初始档位」而不是「调响应速度」,想清楚这一点,调参的方向就明确了。

三个关键参数决定结果。客户端的最大串流码率是天花板,超过它的源必然被转码。服务端的转码策略决定降码率的激进程度,默认偏保守。网络的实际波动决定动态调整是否频繁。三者叠加,就是同一部片在家里与在外面画质不同的原因。
一个具体现象能帮助判断:如果外网播放时画质明显低于你上行带宽能承载的水平,问题通常在客户端的最大串流码率设得太低,而不是服务端性能不足。把它上调一档再观察一两天,画质与卡顿的平衡点就找到了。反过来,如果外网频繁卡顿而画质尚可,那大概率是上行带宽本身不够,调码率救不了,需要从 em-0204 的服务端策略与观看习惯两方面入手。
码率自适应还有一层容易被忽略的作用:它保护着其他家庭成员的体验。家里几个人同时外网观看时,自适应会自动把每一路压到带宽能均分的水平,而不是让某一路把上行吃光后大家一起卡。这个隐性的协商机制比手动分配各端码率优雅得多,也是自建方案相对硬设置方案的一个优势。
内外网的不同策略
内网与外网的带宽条件差几个量级,一套设置不可能两头最优。推荐的组合是:
| 网络 | 最大串流码率 | 转码预期 | 说明 |
|---|---|---|---|
| 内网有线 | 高于片源 | 基本不转码 | 原盘直接播 |
| 内网 Wi-Fi | 中高档 | 偶尔转码 | 看 Wi-Fi 实测 |
| 外网家庭宽带 | 按上行降一档 | 常规转码 | 留给观看并发 |
| 移动网络 | 低档 | 必然转码 | 流量也要省 |

客户端切换网络的典型问题是:在家设好的高码率配置出了门还生效,导致移动数据下频繁转码既耗服务器也耗流量。部分客户端支持按网络类型分别保存设置,没有这个能力的就受累手动切,好在切换只需点一下。
操作上有一个小习惯值得养成:出门前一晚把想看的内容手动下载好,而不是等坐上车再开始。移动网络下点播的启动延迟与码率协商都不如在家下载来得干脆,提前准备的做法把不确定性全部消灭在家中,这是比较朴素但极其有效的出行仪式。
与硬件转码的关系
离线下载与码率自适应都大量使用服务端转码能力,硬件转码是否开启直接决定这两项功能的体验。软转码下,一次外网播放可能占满 CPU,同时再有人下载转码内容就要排队。开了硬件转码后才可能出现「一路观看、一路下载、服务器还不太忙」的状态。
这也解释了为什么 em-0202 的开启步骤值得优先完成:它是后面所有客户端体验的地基。反过来,硬件转码的并发能力决定了家里能同时有几路外网观看与下载,这个估算方法在 em-0404 展开。
下载场景下硬件转码的收益还有一层:下载转码是一次性的活,干完就不再消耗服务器,而观看转码是持续的。所以把下载任务集中到深夜跑,既躲开家人观看的服务器高峰,又让转码的缓慢变得无关紧要,是一举两得的时间安排。
一套被验证的日常配置
把前面零散的建议收拢成一套可直接照做的配置。以三口之家、上行 50Mbps、平时两人有外网观看需求的典型家庭为例:
| 项目 | 设置 | 理由 |
|---|---|---|
| 服务端转码硬件加速 | 开启 | em-0202 的前提 |
| 客户端内网码率 | 高于片源 | 原盘直接播 |
| 客户端外网码率 | 10Mbps 档 | 两路并发有余量 |
| 手机自动下载 | 追更剧集最近五集 | 通勤够看 |
| 孩子设备离线库 | 周末动画精选 | 出门安静 |
| 下载时间 | 深夜 | 错峰不争资源 |
这套配置跑顺后基本可以不用再管。偶尔家庭出行前手动追加几部电影到平板,其余时间它自己运转——离线与自适应真正发挥作用的状态,是你几乎感觉不到它们的存在。
延伸阅读
- 硬件转码的开启与验证见 em-0202,本篇是其上层应用
- 客户端播放设置的总表见 em-0301,服务端优化项见 em-0204
- 移动客户端的完整体验见 em-0301,第三方客户端的离线能力参差见 em-0302
- 网络带宽的测算方法见 em-0103,组网与出口配置可参考《软路由入门指南》与《OpenWrt 必备指南》
