1.
准备与选型
步骤概述:1) 选择台湾节点的云主机(建议机房在台北/新竹),2) 选择带公网带宽与公网IP的实例,3) 确认操作系统(Ubuntu 20.04+ 或 CentOS 7/8)。小分段:a. 规格建议:4 vCPU、8GB 内存、最低 200Mbps 带宽(视并发调整);b. 磁盘:至少 100GB,用于录制与缓存;c. 防火墙:开放 TCP 1935/80/443,UDP(若用 WebRTC/Quic)。
2.
在台湾云服务器上安装媒体服务(以 Nginx + nginx-rtmp 为例)
步骤详解:1) 安装依赖:apt update && apt install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev git wget;2) 下载 nginx 与 rtmp 模块:git clone https://github.com/arut/nginx-rtmp-module.git && wget http://nginx.org/download/nginx-1.20.2.tar.gz && tar zxvf nginx-1.20.2.tar.gz;3) 编译:cd nginx-1.20.2 && ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module && make && sudo make install。小分段:a. 安装路径默认 /usr/local/nginx;b. 配置文件备份:cp /usr/local/nginx/conf/nginx.conf /root/nginx.conf.bak。
3.
配置 RTMP 与 HLS(示例 nginx.conf 关键片段)
步骤详述:在 nginx.conf 中加入 rtmp 段和 http 段,示例要点:1) rtmp { server { listen 1935; chunk_size 4000; application live { live on; record off; hls on; hls_path /tmp/hls; hls_fragment 4s; } } };2) http 段:设置 /hls/ 目录为静态并允许跨域。小分段:a. 确保 /tmp/hls 有读写权限;b. 重启 nginx:/usr/local/nginx/sbin/nginx -s reload。
4.
推流与拉流测试(FFmpeg 示例)
操作步骤:1) 本地推流:ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 1500k -c:a aac -f flv rtmp://your-taiwan-ip/live/streamkey;2) 浏览器播放 HLS:http://your-taiwan-domain/hls/streamkey.m3u8(或用 VLC)。小分段:a. 若用 HTTPS origin,确保 nginx 配置了 SSL;b. 推流若失败,检查防火墙与端口。
5.
在 CDN 控制台创建拉取加速(常见操作流程)
步骤指南:1) 登录 CDN 服务商控制台,创建“Pull Zone”或“加速域名”;2) 设置源站地址为
台湾云服务器的域名或公网 IP(优先填域名并启用 HTTPS);3) 配置缓存规则:对 .m3u8 设置短 TTL(例如 5-10s),对 .ts 片段设置较长 TTL(例如 300s);4) 开启 GZip、缓存压缩与跨域。小分段:a. 若 CDN 支持 Origin Shield/回源加速建议开启;b. 设置回源 Host 为你的域名以通过虚拟主机验证。
6.
鉴权与安全(签名/防盗链/HTTPS)
实施步骤:1) 建议在 CDN 侧启用 URL 签名或 Token 鉴权以防盗链;2) 若用自签名或 Let’s Encrypt,在 CDN 中启用自定义证书或使用 CDN 证书托管;3) 在 nginx 层可用防火墙或仅允许 CDN 回源 IP 访问 /hls。小分段:a. 配置 CDN 签名后,测试带签名的播放链接;b. 在服务器端用 iptables 限制直接访问(只允许 CDN 回源 IP 列表)。
7.
监控、日志与性能调优
执行要点:1) 启用 nginx 访问日志与 rtmp 日志,定期分析播放失败率与 4xx/5xx;2) 使用 CDN 的统计看并发、命中率并调缓存;3) 若片段生成延迟高,降低 hls_fragment 并调整 encoder 参数。小分段:a. 使用 Prometheus + node_exporter 或 CDN API 拉取指标;b. 定期清理 /tmp/hls 过期文件。
8.
问:为什么要在台湾部署原装云媒体服务器后再接 CDN?
答:在台湾部署原点可确保源站延时最低、内容合规与本地回源速度快;接 CDN 能把流量分发到全球节点,降低源站带宽压力、提高并发承载与就近加速体验。
9.
问:如何设置最优的 HLS 缓存策略以兼顾实时性与命中率?
答:推荐 m3u8 短 TTL(5-10s)保证清单最新,.ts 片段可设置 60-300s 缓存以提高命中;结合 CDN 的回源条件(未命中时回源)和推流分片时间(hls_fragment 2-4s)可达到低延迟与高命中率平衡。
10.
问:部署与测试过程中常见问题及快速排查方法?
答:常见问题包括推流卡顿(检查带宽/编码参数)、404/403(检查回源 Host 与防火墙)、m3u8 更新慢(检查 CDN 缓存与 m3u8 TTL)、播放黑屏(查看片段完整性)。排查命令:curl -I (观察缓存头)、tail -f /usr/local/nginx/logs/error.log(查看错误),并通过 ffmpeg 本地拉流验证源站是否正常。
来源:媒体工程师指南台湾原装云媒体服务器与CDN加速结合方法