🗣 Wd提问: nginx 视频服务器
🤖 Ai回答: 使用 Nginx 搭建视频服务器是一个常见的需求,适用于视频点播、直播流媒体等场景。以下是详细的配置步骤和注意事项:
一、基础配置(视频点播)
1、安装 Nginx
bash
Ubuntu/Debian
sudo apt update && sudo apt install nginx
CentOS
sudo yum install nginx
2、准备视频文件
将视频文件(如 MP4、FLV、HLS 等格式)存放到服务器目录,例如:
/var/www/videos/
3、配置 Nginx 服务器块
编辑 Nginx 配置文件(如 `/etc/nginx/sites-available/default` 或新建配置文件):
nginx
server {
listen 80;
server_name your_domain_or_ip;
location /videos/ {
alias /var/www/videos/;
add_header Content-Disposition inline; 允许浏览器直接播放
types {}
default_type application/octet-stream;
支持视频分段加载(重要!)
add_header Accept-Ranges bytes;
add_header Content-Length $body_bytes_sent;
add_header Content-Range bytes $bytes_sent-$body_bytes_sent/$body_bytes_sent;
}
可选:启用 HLS 流媒体(需额外配置)
location /hls/ {
types {}
default_type application/vnd.apple.mpegurl;
alias /var/www/hls/;
add_header Cache-Control no-cache;
}
}
4、重启 Nginx
bash
sudo nginx -t && sudo systemctl restart nginx
5、测试访问
在浏览器或 HTML 页面中通过以下方式播放视频:
html
<video controls
<source src=http://your_server_ip/videos/sample.mp4 type=video/mp4
Your browser does not support the video tag.
</video
二、高级功能(直播/流媒体)
1、RTMP 直播流媒体
安装 Nginx RTMP 模块:
Nginx 官方不包含 RTMP 模块,需使用第三方模块(如 `nginx-rtmp-module`):
bash
从源码编译 Nginx 并添加模块
git clone https://github.com/arut/nginx-rtmp-module.git
./configure add-module=../nginx-rtmp-module
make && make install
配置 RTMP 推流/拉流:
在 `nginx.conf` 中添加 RTMP 配置:
nginx
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
推流地址: rtmp://your_server_ip/live/stream_key
拉流地址: rtmp://your_server_ip/live/stream_key
}
可选:转 HLS
application hls {
live on;
hls on;
hls_path /var/www/hls;
hls_fragment 3;
}
}
}
使用 OBS 推流:
使用 OBS 等工具推流到 `rtmp://your_server_ip/live/stream_key`,然后通过 HLS 或 RTMP 拉流播放。
2、HLS 自适应流媒体
生成 HLS 分片:
使用 `ffmpeg` 将视频转为 HLS 格式:
bash
ffmpeg -i input.mp4 -codec:v h264 -codec:a aac -hls_time 4 -hls_playlist_type vod -hls_segment_filename segment_%03d.ts output.m3u8
将生成的 `.m3u8` 和 `.ts` 文件放到 `/var/www/hls/`。
HTML5 播放 HLS:
使用 [hls.js](https://github.com/video-dev/hls.js) 在浏览器中播放:
html
<script src=https://cdn.jsdelivr.net/npm/hls.js@latest</script
<video id=video controls</video
<script
if(Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource('http://your_server_ip/hls/output.m3u8');
hls.attachMedia(video);
}
</script
三、优化与安全
1、性能优化
nginx
location /videos/ {
alias /var/www/videos/;
sendfile on; 启用零拷贝文件传输
tcp_nopush on; 减少网络包数量
directio 512; 大文件传输优化
aio on; 异步 I/O
sendfile_max_chunk 512k; 每次传输的最大块大小
}
2、防盗链(Referer)
nginx
location /videos/ {
valid_referers none blocked your_domain.com;
if ($invalid_referer) {
return 403;
}
}
3、限制下载速度
nginx
location /videos/ {
alias /var/www/videos/;
limit_rate 1m; 限制客户端下载速度为 1MB/s
}
4、启用 HTTPS(推荐)
使用 Let's Encrypt 免费证书:
bash
sudo apt install certbot python3-certbot-nginx
sudo certbot nginx -d your_domain
四、常见问题排查
1、视频无法播放
检查 Nginx 是否启用字节范围请求(`Accept-Ranges: bytes`)。
确保视频文件格式和 MIME 类型正确(Nginx 默认已支持 MP4/FLV/HLS)。
2、直播延迟过高
调整 `ffmpeg` 推流参数(如 `-g` 关键帧间隔)。
使用低延迟协议(如 WebRTC)替代 RTMP。
3、大文件传输问题
调整 Nginx 超时参数:
nginx
proxy_read_timeout 300s;
proxy_send_timeout 300s;
4、日志查看
bash
tail -f /var/log/nginx/error.log
五、总结
简单点播:直接配置静态文件服务即可。
直播/实时流:需使用 RTMP 模块或 HLS。
大规模并发:结合 CDN 或使用 SRS(Simple Realtime Server)等专业流媒体服务器。
根据需求选择合适方案,确保网络带宽和服务器性能满足视频传输需求。
📣 商家广告 :
👍
0
👎
IP地址: 31.177.29.125
搜索次数: 0
提问时间: 2025-11-11 01:14:59
🛒 域名购买 :
pmmm.com.cn 40.gold 8yw.net kou.red 8.tj.cn 990.net.cn t-x.com.cn qg.biz 8xg.net j-f.com.cn
❓️ 热门提问 :
idc资质流程 云计算的关键 服务器租贷 cm后缀域名 机房的温湿度 安全托管服务 abbvie域名 esxi云主机 独享ip架设 租赁主机 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
ename.com vtol.ren nggl.cn oppo.hl.cn oibj.cn vv.ln.cn f.sc.cn byd.tw.cn djpb.cn le.xj.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
企业网站搜索
网站搜索
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。