1. 准备工作:确认视频源与用途
在开始之前,先确认你的视频源(例如:存储在对象存储 COS 的原始 MP4 或已经分片的 HLS/DASH 文件)、目标观众地域、播放方式(点播或实时、是否允许跨域)、以及是否需要实时低延迟(如低延迟直播或互动)。建议把原始文件上传到腾讯云对象存储 COS,按业务线或分辨率建立桶(Bucket),并设置合适的权限(推荐使用私有或带签名的临时访问以保护内容)。
2. 在 COS 中上传并规范化文件结构
在 COS 控制台创建桶,选择合适的地域(尽量靠近用户或 CDN 节点覆盖好的一侧)。上传文件时按目录规范:/video/{app}/{resolution}/{filename}.ts 或 /video/{app}/{resolution}/index.m3u8。推荐把 HLS 分片(.ts)和 m3u8 存放在同一 bucket,并确保 Content-Type 正确(m3u8: application/vnd.apple.mpegurl,ts: video/MP2T)。在上传后,通过 COS 控制台或 SDK 检查文件元信息(Content-Length、Cache-Control)。
3. 使用 MPS 做转码与自适应码率(必要步骤)
如果只有单一 MP4,使用腾讯云媒体处理(MPS,Media Processing Service)做转码,输出多码率 HLS(建议 1080p、720p、480p、360p 四档)并开启关键帧对齐与同一时基,设置分片时长 2-6 秒(常用 4 秒可平衡延迟与抖动)。在 MPS 任务中启用“自适应码率封装”以自动生成 master.m3u8(包含各档位子 m3u8)。完成后把输出回写到 COS,记录好各地址路径。
4. 在 CDN 控制台新增域名并配置回源
登录腾讯云 CDN 控制台 -> 添加域名,填入你要用于播放的加速域名(例如 cdn.yoursite.com),选择点播加速类型。回源方式选择“对象存储 COS”并填写回源域名或绑定的 COS 域名(例如 yourbucket-123456.cos.ap-guangzhou.myqcloud.com),若用自有源则填公网地址。回源协议建议HTTP/HTTPS均支持,若启用回源鉴权需在回源设置中配置相应签名信息。
5. 配置缓存规则与缓存键,支持分片缓存
在 CDN 域名下的“缓存配置”中添加规则:对 m3u8 设置较短的缓存时间(如 30-60 秒),对 ts (分片)设置较长的缓存(如 1小时或更长),以提高命中率。缓存键建议包含路径、query(视情况包含或排除播放鉴权的参数),并保留 Range 请求的转发(见下文)。若使用带参数的防盗链或防盗链签名,把签名参数排除在缓存键之外以避免缓存碎片。
6. 开启 HTTPS 与证书配置
为播放域名配置 HTTPS(CDN 控制台 -> HTTPS 设置),可使用腾讯云免费证书或上传自有证书。强制 HTTPS 可以提升安全性和现代传输协议支持(比如 HTTP/2、QUIC),并在播放器端避免 mixed-content 问题。确保证书生效后在播放器(HLS 播放器或 DASH 播放器)中使用 https 地址。
7. 保留并转发关键请求头,支持 Range 与断点续传
为实现播放器的跳转与快速 seek,必须在 CDN 配置中保留并转发 Range、If-Modified-Since、If-None-Match 等头到回源(缓存命中策略也要支持 206 Partial Content)。在 CDN 的“回源与请求头”设置中将 Range 勾选为转发,确保播放器请求能正确返回 206 并且 CDN 能缓存分片。
8. 优化分片时长与分片大小
分片时长直接影响延迟与缓存效率。一般点播推荐 4 秒分片;若对延迟要求更高(如低延迟直播或互动),可考虑 2 秒甚至更短,但短分片会增加请求数与回源压力。确保每个分片大小在几十 KB 到几百 KB 之间,避免过大导致首屏慢,过小导致并发请求过多。
9. 启用并配置 CDN 的智能压缩与协议优化
在 CDN 中开启 Brotli 或 Gzip(针对 manifest 文件 m3u8 可启用压缩),同时启用 HTTP/2/QUIC 或 SPDY(如果 CDN 支持),减少握手与头部开销。对于视频分片本身通常不需要压缩(已经是二进制),但 m3u8 与 manifest 可以受益于压缩,降低延迟与流量。
10. 设置回源保护与限速防刷
为避免源站被突然并发请求压垮,开启 CDN 的回源保护(回源限流、回源重试)与防盗链规则;若使用临时签名 URL,请在 CDN 配置中兼容签名验证或在回源端校验。也可以在 COS 侧使用域名白名单或签名策略,防止未授权直接从 COS 访问。
11. 使用预热、智能预取与缓存预热
对热门视频使用 CDN 的缓存预热功能,将常访问的 m3u8 与前几片 ts 预先推入边缘节点,缩短首次访问延迟。也可以结合业务统计定期预热热门内容。对于突发流量,CDN 的预热能显著降低首包延迟。
12. 监控与指标:如何看延迟与质量
在腾讯云 CDN 控制台查看访问详情(PV、带宽、回源流量、回源响应时间、命中率)并结合播放器端指标(首屏时长、缓冲率、卡顿数)来评估质量。使用腾讯云 CLS/CMON 或第三方监控接收日志,开启 CDN 访问日志导出并分析 4xx/5xx、回源 200/206 比例、m3u8 更新频率等指标以定位问题。
13. 常见问题与调优建议
若延迟高:检查分片时长与首屏加载的预取策略,确认 CDN 命中率与回源响应时间;若质量不稳定:检查转码码率/分辨率是否合理、关键帧间隔(GOP)是否一致;若用户频繁卡顿:开启自适应码率播放器(ABR),并保证 MPS 输出多档且切换平滑。必要时启用边缘侧回源缓存回退策略。
14. 实际操作示例总结(一步步执行)
实操步骤:1) 在 COS 建桶并上传原始 mp4;2) 在 MPS 创建转码任务,输出多码率 HLS 到 COS;3) 在 CDN 控制台添加加速域名并绑定回源 COS 域名;4) 配置缓存规则(m3u8短缓存、ts长缓存)、转发 Range、HTTPS;5) 预热热门文件并开启压缩与 HTTP/2;6) 监控指标并按需调整分片时长与缓存策略。
15. 问:用腾讯云 CDN 后为什么仍然有卡顿,是 CDN 配置问题还是播放器问题?
答:卡顿可能由多方面引起:一是 CDN 命中率低导致频繁回源并且回源响应慢;二是分片时长过长或转码档位不合理导致播放器在码率切换时缓冲;三是播放器 ABR 算法或网络抖动处理不佳。排查方法:查看 CDN 日志的命中率与回源延迟,确认 m3u8 与 ts 是否按预期缓存,检查播放器侧切换策略与初始缓冲配置。
16. 问:如何在保证视频质量的前提下降低延迟?
答:综合做法包括:减小 HLS 分片时长(2-4 秒之间权衡)、保证关键帧对齐并设置合理 GOP、使用短缓存更新 m3u8 但缓存 ts、开启 CDN 的智能压缩与 HTTP/2/QUIC、预热热门内容,并在播放器端实现更积极的预加载与快速码率切换策略。
17. 问:播放域名如何与 COS 结合并防止盗链?
答:推荐使用 CDN 加速域名(如 cdn.example.com)并在 COS 侧配置私有读写或使用签名 URL。可以在 CDN 控制台开启 referer 防盗链或时间戳签名,同时在回源时验证签名或在 CDN 回源鉴权中配置校验,确保只有经过 CDN 的请求能访问 COS 源文件。