1. 项目准备与需求确认
步骤1:确认目标用户区域(柬埔寨全国、金边优先或跨国)。
步骤2:确定视频类型(点播 VOD / 直播 Live)、码率范围与并发用户量(估算带宽)。
步骤3:列出时延与流畅度指标(Startup < 2s、重缓冲率 < 1%)。
小贴士:在预算允许下优先选择在柬埔寨或邻近新加坡有 PoP 的 CDN 服务商。
步骤1:选云服务器(CPU、内存、带宽包,建议多网口 1Gbps 以上,IOPS 优化)。
步骤2:选 CDN,要求有柬埔寨 PoP 或覆盖东南亚低延迟节点,支持 HTTP/2、HTTP/3、HLS/DASH、Token 鉴权与动态加速。
步骤3:对比费用模型(流量计费、请求计费、缓存命中率影响成本)。
3. 云服务器基础环境搭建(示例:Ubuntu)
步骤1:更新系统:sudo apt update && sudo apt upgrade -y。
步骤2:安装 Nginx(含 HTTP FLV/RTMP 模块或使用 nginx-rtmp):sudo apt install nginx -y。
步骤3:安装 ffmpeg 用于编码/切片:sudo apt install ffmpeg -y。
小分段:为保证 I/O 性能,部署时选择 SSD、启用足够文件描述符限额(/etc/security/limits.conf)。
4. 视频存储与编码流程(VOD 与 Live)
VOD 推荐流程:上传原始文件到对象存储(S3 兼容),后端触发转码任务生成多码率 HLS/DASH。
Live 推荐流程:使用 OBS 推流到服务器(RTMP),服务器用 ffmpeg 实时转码并切片成 HLS:
示例命令:ffmpeg -i rtmp://localhost/live/stream -c:v libx264 -preset veryfast -g 48 -keyint_min 48 -sc_threshold 0 -b:v 2000k -maxrate 2140k -bufsize 3000k -hls_time 4 -hls_playlist_type event -hls_segment_filename /var/www/hls/stream_%03d.ts /var/www/hls/stream.m3u8
5. Nginx / 静态资源服务与响应头配置示例
在 /etc/nginx/sites-enabled/default 添加 HLS 服务:
location /hls/ { root /var/www; add_header Cache-Control "public, max-age=3600"; add_header Access-Control-Allow-Origin *; types { application/vnd.apple.mpegurl m3u8; video/MP2T ts; } }
建议:设置合理的 Cache-Control(片段短,playlist 更短),启用 Gzip/Brotli,支持 Range 请求以便播放器断点续传。
6. CDN 与源站(Origin)联动配置步骤
步骤1:在 CDN 控制台添加站点,设置 Origin 为云服务器公网 IP 或对象存储域名。
步骤2:配置 CNAME:将业务域名(video.example.com)CNAME 指向 CDN 分配域名。
步骤3:缓存规则:对 .m3u8 设置较短 ttl(例如 5-10s),对 .ts 设较长 ttl(例如 1小时),开启按需回源(Origin Pull)。
步骤4:配置 HTTPS(证书托管或上传证书),启用 HTTP/2/3。
7. 鉴权与安全(防盗链、IP 限制、签名 URL)
步骤1:启用 Token 签名 URL(防盗链)在 CDN 控制台生成密钥并在播放器端/服务端签名。
步骤2:配置 WAF 基础规则,拦截异常请求流量。
步骤3:限制回源请求频率,防止爬虫导致源站过载。
8. 监控与性能验证
步骤1:在云服务器与 CDN 启用指标监控(带宽、QPS、回源流量、缓存命中率)。
步骤2:使用链路测试工具(ping、traceroute)及浏览器开发者工具观察 m3u8/ts 请求耗时。
步骤3:部署合成监测脚本(Selenium+ffplay 或 ffprobe)定时拉取播放测试并记录启动时间与缓冲事件。
9. 优化建议与调优策略
建议1:码率阶梯(如 240p/360p/480p/720p/1080p),并提供 ABR(自适应码流)。
建议2:HLS 切片时长 2-6s 平衡延时与平滑度,直播可选择 3-4s。
建议3:提高缓存命中率:对 ts 文件延长缓存,使用 Cookie 无缓存的回源策略并开启 CDN 边缘缓存压缩。
建议4:启用 TCP Fast Open、Keepalive、HTTP/3 在支持终端上减少延时。
10. 常见故障排查步骤
故障1:播放卡顿 -> 检查 CDN 缓存命中率与回源带宽,查看源站 CPU/Network。
故障2:跨域或播放异常 -> 检查 CORS 设置、MIME 类型、证书链是否完整。
故障3:片段丢失 -> 查看切片进程日志(ffmpeg/nginx),确认磁盘 I/O 与权限。
11. 上线与灰度发布建议
步骤1:先在小流量用户上灰度(10%),观察缓存命中、回源 QPS、重试率;
步骤2:逐步放量并调整 CDN 缓存策略与边缘配置;
步骤3:上线后保持 24-72 小时密切监控,及时调整码率和回源策略。
12. 其他实用配置命令与脚本示例
使用 rsync 自动同步 VOD 到对象存储:rsync -avz /local/videos/ user@oss:/bucket/videos/。
自动化转码脚本参考:编写任务队列(如使用 Celery),触发 ffmpeg 转码并上传到对象存储,完成后通过 API 通知 CDN 刷新或预热。
Q1:在柬埔寨部署云服务器+CDN,怎样保证最低启动延时?
回答:优先选有柬埔寨 PoP 或东南亚邻近节点的 CDN,缩短 DNS 解析链路;启用 HTTPS 会话复用(HTTP/2/3)、保持短切片时长(3-4s)、playlist 缓存短 TTL,并在播放器启用预加载(preload)与首次快速码率切换策略,能把 startup time 降到 1-2 秒级别。
Q2:如何配置 CDN 缓存策略以兼顾实时性与缓存命中率?
回答:对 m3u8 playlist 设置短 TTL(5-10s)保证新内容及时更新,对 ts 片段设置较长 TTL(30min~1h)提高缓存命中率;开启 CDN 的分层缓存(Edge + Regional)与按需回源,并对热门内容进行预热(预拉取)以减少回源压力。
Q3:若出现边缘节点缓存不中导致回源过载,应如何快速处理?
回答:立即在 CDN 控制台临时提高边缘缓存 TTL 或开启缓存忽略参数(cache key 固定化);同时排查是否因签名 URL 或 Cookie 导致缓存分散,必要时清理/统一 cache-key 并对热点 ts 做预热,短期内可启用流量峰值保护或限流到源站的策略。
来源:柬埔寨云服务器与 CDN 联动优化视频业务播放流畅度