1.
总体流程概述
步骤1:在本地或VPS上准备原始MP4(建议使用H.264 + AAC编码以兼容广泛终端)。
步骤2:使用ffmpeg生成多个分辨率和码率的MP4或HLS分片(常见分辨率:240p/360p/480p/720p/1080p)。
步骤3:将生成的文件上传到对象存储(如S3/OSS)或直接推送到CDN的回源服务器(Origin)。
步骤4:在CDN控制台添加自定义域名并配置回源、缓存策略与HTTPS证书。
步骤5:开启DDoS防护、WAF与速率限制,设置回源访问白名单,完成上线。
步骤6:测试不同网络/终端播放,监控带宽、QPS与缓存命中率。
2.
编码与多分辨率示例(使用ffmpeg)
建议编码:视频 H.264 (libx264),音频 AAC (aac),容器 MP4 或转为HLS(.m3u8 + .ts 分片)。
示例命令(生成多分辨率MP4):ffmpeg -i input.mp4 -vf scale=1280:720 -b:v 2500k -maxrate 2675k -bufsize 3750k -c:a aac -b:a 128k out_720.mp4 (类似命令分别生成480/360/240)。
建议码率对照表见下方,可作为编码基准。
如果要自适应流推荐生成HLS:使用 -hls_time 6 -hls_playlist_type vod 生成分片与m3u8清单。
注意:对于移动终端优先使用分辨率 <= 720p,并注意帧率(一般30fps足够)。
编码批处理可在VPS上并行执行,推荐使用4核/8GB内存机器以加快转码速度。
3.
回源服务器(VPS/主机)配置示例
推荐软件:Nginx(静态文件/反向代理),或使用对象存储作为主回源(性能更好)。
示例VPS配置:4 vCPU / 8 GB RAM / 200 GB SSD / 带宽 200 Mbps(适合中小流量)。
Nginx基本配置示例(片段):
server {
listen 80;
server_name video.example.com;
location / {
root /data/videos;
expires 30d;
add_header Cache-Control "public";
}
}
建议将回源限制为CDN回源IP,防止直接拨打源站消耗带宽。
使用独立磁盘或对象存储存放视频,避免本机磁盘I/O成为瓶颈。
4.
CDN与域名设置要点(含缓存与HTTPS)
在CDN控制台添加域名(例如 video.example.com),将回源指向VPS或对象存储地址。
设置证书:建议使用Let's Encrypt或CDN托管证书开启HTTPS,提高兼容性与安全性。
缓存策略:静态视频资源可设置长缓存(30天),但HLS playlist设置短缓存(例如6秒或不缓存)。
回源策略:启用回源鉴权或自定义Header,限制只有CDN能够访问回源源站。
性能优化:开启HTTP/2、Gzip(对MP4无效但对manifest有效)、以及回源连接池与明显的缓存规则。
成本控制:在高并发下优先使用对象存储 + CDN,减少回源流量费用。
5.
分辨率/码率参考表(示例数据)
下表为10分钟视频在不同分辨率与码率下的大致文件大小与带宽估算(用于演示)。
| 分辨率 | 视频码率 | 音频码率 | 估算文件大小(10min) | 每1000次播放流量 |
| 240p | 300 kbps | 64 kbps | ~25 MB | ~25 GB |
| 360p | 700 kbps | 96 kbps | ~60 MB | ~60 GB |
| 480p | 1000 kbps | 128 kbps | ~85 MB | ~85 GB |
| 720p | 2500 kbps | 128 kbps | ~260 MB | ~260 GB |
| 1080p | 5000 kbps | 192 kbps | ~520 MB | ~520 GB |
说明:估算基于恒定码率计算,实际文件大小受编码效率、帧率和场景复杂度影响。
6.
DDoS防护与安全实务
启用CDN自带的抗DDoS与WAF服务,拦截常见攻击并缓存合法流量以保护源站。
配置回源IP白名单,仅允许CDN节点访问源站管理端口(例如只允许443与80)。
使用速率限制与连接并发限制,例如 Nginx limit_conn/limit_req 模块限速登录或下载请求。
监控:设置带宽阈值告警(例如带宽 > 80% 的持续30分钟触发告警)并开启自动扩容或流量清洗。
日志与追踪:开启CDN访问日志、WAF日志并定期分析异常流量来源与行为。
定期演练:模拟流量突增场景,验证缓存命中率、回源承受能力与清洗策略。
7.
真实案例与效果验证
案例背景:某在线教育平台使用4 vCPU/8GB VPS作回源,使用对象存储 + CDN分发,总日PV ~ 200k,平均并发峰值 1200。
处理方式:将每节课导出为多分辨率MP4并生成HLS清单,回源仅保留原始高码率文件并由后端按需转码缓存。
结果数据:720p当天峰值带宽约 160 Mbps,缓存命中率 94%,回源流量占比低于 6%,DDoS突发一次被CDN清洗,未影响正常访问。
服务器配置示例:VPS 4 vCPU, 8 GB, 带宽 200 Mbps;Nginx + certbot 自动续期证书;对象存储例如 OSS/S3 用作二级备份。
经验总结:优先使用对象存储 + CDN、预制多分辨率或HLS以提升终端兼容性,并结合CDN WAF/DDoS防护保障可用性。
后续建议:若用户量持续增长,考虑启用多区域回源与负载均衡,并对热门视频使用边缘预热策略。
来源:如何把mp4视频加到cdn并设置多分辨率以兼容不同终端