凤凰网
单个MP4只能按照固定码率传输。用户当前网络速👍度低于视频码率时,Nginx即使传输效率很高,播放器仍然会缓冲。更适合多种网络环境的做法是将同一视频制作成多档清晰度,再通过HLS或DASH让播放器根🔍据带宽切换。
多人同时播放时,瓶颈通常是出口带宽,而不是某一条Nginx指令。粗略判断时,应将同时播放人数乘以单路视频码率,再为协议开销、峰值流量和其他业务预留空间。服务器本地磁盘读取速度📢不足时,SSD、操作系统文件缓存和边缘缓存都可能带来帮助;用户分布较广或并发明显时,CDN通常比继续堆高worker_connections更有效。
Nginx对静态文件通常原生支持字节范围请求,不要在视频目录中配置禁用Range的规则。检查时不要要求首次请求一定返回206,因为播放器首次获取完整文件信息时可能返回200;更重要的是,拖动进度条或从中间开始播放后,响应是否出现206 Partial Conte🎆nt、Content-Rang☀️e是否正确,以及服务器是否只传输请求的片段。
直播HLS的m3u8播放列表会持续变化,不能使用与固定视频分片相同的长缓存策略。一个常见的静态分发🌅思路如下: