1. 项目背景与目标概述
1) 项目域名:韩国影院.vps,目标为在韩国节点提供稳定的在线视频点播与直播服务。
2) 目标功能:多清晰度自适应码流(HLS/DASH)、秒级启动、清晰度切换无卡顿。
3) 目标用户:韩国及日韩周边观众,峰值并发预估 5,000 人单视频分发场景。
4) 技术栈:Ubuntu 22.04、Nginx(nginx-rtmp)、FFmpeg、Cloudflare CDN(韩国 PoP)、Prometheus+Grafana 监控。
5) 性能目标:1080p 启动时间 <1.5s,清晰度切换延迟 <300ms,总体可支持 5,000 并发(使用 CDN 扩展)。
2. VPS 与主机配置(韩国节点)
1) 节点提供商:韩国本地 VPS(示例:k-vps-provider),位于首尔机房。
2) 服务器规格示例:4 vCPU / 8 GB RAM / 100 GB NVMe / 1 Gbps 公网口,月流量非封顶(优先选择带有大流量包的计费)。
3) 操作系统与内核:Ubuntu 22.04 LTS,内核 5.15,开启 TCP BBR、调优文件描述符至 200k。
4) 网络参数:带宽峰值 1 Gbps,出口延迟 <10ms(到韩国主要 CDN 节点)。
5) 备份与快照:每日快照,7 天保留;重要配置使用 Ansible 管理保证可快速恢复。
3. 流媒体架构与安全(CDN 与 DDoS)
1) 架构:源站(韩国影院.vps)负责转码与生成 HLS/DASH,再由 CDN(Cloudflare + 本地 CDN)缓存加速。
2) 软件:Nginx + nginx-rtmp-module 用于 RTMP 推流接收与 HLS 切片;FFmpeg 做实时转码并生成多码率流。
3) CDN:接入 Cloudflare + 本地 CDN 节点,使用 CDN 缓存母带并接管大流量,减少源站带宽压力。
4) DDoS 防御:Cloudflare Spectrum、速率限制、源站 IP 隐藏、iptables 黑白名单、fail2ban 防暴力登录。
5) 监控与告警:Prometheus 抓取 Nginx/nginx-rtmp、FFmpeg 进程、网络带宽;Grafana 呈现流量与延迟;当异常流量 >5Gbps 时触发自动扩容或切换到备用源站。
4. 自适应码流码率梯度与示例表
1) 原则:覆盖常见分辨率与网速,保证切换平滑,码率间比率约 1.8-2.0。
2) 分段时长:建议 4 秒切片,兼顾启动速度与 CDN 缓存效率。
3) 音频码率:统一 96-128 kbps AAC LC。
4) 码率表(示例,居中显示):
| 分辨率 | 视频码率 | 音频码率 | 带宽预算/单路 |
| 426x240 | 400 kbps | 96 kbps | ~0.5 Mbps |
| 640x360 | 800 kbps | 96 kbps | ~1.0 Mbps |
| 854x480 | 1,500 kbps | 96 kbps | ~1.6 Mbps |
| 1280x720 | 3,000 kbps | 128 kbps | ~3.2 Mbps |
| 1920x1080 | 5,000 kbps | 128 kbps | ~5.1 Mbps |
5) 播放器变体清单示例:#EXT-X-STREAM-INF:BANDWIDTH=5100000,RESOLUTION=1920x1080 URI="1080/index.m3u8",其它分辨率类推。
5. 部署步骤与配置示例(简要)
1) 环境准备:apt update && apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev ffmpeg。
2) 编译 Nginx + nginx-rtmp:下载 nginx 与模块,编译时加上 --with-http_ssl_module。
3) nginx.conf 核心片段示例(简化展示):
- rtmp { server { listen 1935; application live { live on; hls on; hls_path /var/www/hls; hls_fragment 4s; hls_variant on; } } }
4) FFmpeg 转码示例:推入 5 个并行转码流到不同 HLS 输出(示例每路参数根据上表调整)。
5) CDN 与 DNS:将 DNS 的 CNAME 指向 CDN,加速策略设置为缓存 HLS 切片,源站设置为仅允许 CDN 节点访问(源站 ACL)。
6. 真实案例与性能监测数据
1) 案例描述:某次新片上线测试,使用韩国影院.vps 做源站,峰值并发 4,200 人,主要观众位于首尔与釜山。
2) 实测数据:1080p 单路出带宽 5.1 Mbps;当时源站上传峰值 720 Mbps(因 CDN 缓存,源站实际承载约 10% 的总流量)。
3) 资源占用:单台 4vCPU/8GB 的源站同时转 3 路 1080p->720p->480p 转码,FFmpeg CPU 平均占用 2.5 vCPU,内存占用约 2.2 GB。
4) 抗 DDoS 记录:一次 SYN 泛洪被 Cloudflare 吸收,源站仅感知到正常请求;Cloudflare 报告峰值清洗流量 4.8 Gbps,源站零中断。
5) 优化结论:使用 CDN 缓存 HLS 切片、源站隐藏 IP、开启 Cloudflare Rate Limiting 与 WAF,可在保留单台中小型 VPS 的前提下承载上千并发并保证切换体验。