|
|
本帖最后由 xuyuntao1234 于 2026-2-26 14:13 编辑
网上购入了一个H264/H265视频编码器,将自家的IPTV插入,然后再环出接入IPKVM,IPTV设置为开机自动播放央视1,已基本实现内网随意播放。
现想实现公网推流,使异地设备可直播观看m3u8流,因此需通过nginx将内网设备反向代理到外部,询问千问ai后得到以下脚本,实测失败。
请问大佬们,如何解决?
图1 视频编码器控制后台
图2 IPKVM控制后台
代码1 nginx服务模块(千问ai生成)
- server {
- listen 21796 ssl;
- listen [::]:21796 ssl;
- server_name _iptv_hls;
- include conf.d/restrict_url; # 限制只能通过域名访问的脚本
- include conf.d/dx_ssl; # ssl通用配置脚本
- # 定义上游地址
- set $upstream_rtmp_server 192.168.2.30;
- # 1. 代理 m3u8 索引文件
- location = /live/0/hls.m3u8 {
- proxy_pass http://$upstream_rtmp_server/live/0/hls.m3u8;
-
- # 【关键】绝对禁止缓存 m3u8,确保播放器能获取最新的分片列表
- proxy_cache off;
- proxy_buffering off;
- add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
- add_header Expires '0';
-
- proxy_set_header Host $host;
- proxy_set_header Connection "";
- proxy_http_version 1.1;
- }
- # 2. 代理 .live.ts 单文件分片
- # 使用精确匹配或前缀匹配均可,这里针对特定文件做精确优化
- location = /live/0.live.ts {
- proxy_pass http://$upstream_rtmp_server/live/0.live.ts;
-
- # 【最关键】对于单文件 HLS (live.ts),必须关闭缓冲和缓存
- # 如果开启缓冲,Nginx 会等待整个文件下载完再发给用户,导致直播卡死或无限延迟
- proxy_buffering off;
- proxy_cache off;
-
- # 强制禁用 Nginx 对该文件的任何临时文件写入
- proxy_max_temp_file_size 0;
-
- # 设置极短的超时,避免连接挂起
- proxy_connect_timeout 5s;
- proxy_send_timeout 10s;
- proxy_read_timeout 10s; # 根据实际分片时长调整,通常略大于分片时长
-
- # 传递头部,确保后端能识别请求来源
- proxy_set_header Host $host;
- proxy_set_header Connection "";
- proxy_http_version 1.1;
-
- # 重要:告诉浏览器/CDN 不要缓存这个动态变化的 ts 文件
- add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
- add_header Expires '0';
- add_header Access-Control-Allow-Origin *; # 允许跨域播放
- }
- }
复制代码
请大佬看看,能否帮助一下,谢谢!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|