You need to enable JavaScript to run this app. 如何实现OBS推RTMP到nginx后转WebRTC并提取RTMP分片
优惠活动
大模型
产品
解决方案
定价
更多

如何实现OBS推RTMP到nginx后转WebRTC并提取RTMP分片

Nginx-RTMP流提取与转WebRTC的实操说明

你目前的配置问题本质是对pull指令的功能理解完全错位,大概率是看到文档里的指令说明,混淆了Nginx作为远端流拉取客户端、和作为本地推流接收服务器的两种角色。pull指令的作用是让Nginx-RTMP作为客户端,主动从其他远端RTMP服务器拉取流到本地做转发,根本不是用来把Nginx收到的本地推流落盘成文件的,方向完全反了,自然不会在你的目录下生成任何和RTMP相关的文件。

认知前提澄清

  • 你之前开启hls on时能在目录下看到分片文件,是因为HLS模块专门实现了“流拆解成ts分片+生成m3u8索引”的固定逻辑,这是HLS协议规范要求的能力,不是RTMP协议本身的特性。
  • RTMP是基于长连接的实时流协议,本身没有天然的“分片”结构,nginx-rtmp模块默认也不会把内存里转发的RTMP流落盘成独立文件,官方文档里根本不存在符合你预期的“把RTMP流拆成小文件存在目录下”的指令。
  • 你的转WebRTC链路根本不需要靠读落盘分片的方式取流,这种取流方式的延迟甚至会比直接用RTMP拉流高很多,完全偏离你要低延迟、替代HLS的初始目标。

可直接落地的操作方案

  • 先把基础推流链路跑通:写好标准的Nginx-RTMP应用配置,确保OBS推流到对应RTMP地址后,通过同地址的RTMP拉流能正常拿到视频,不存在鉴权不通过、路径不匹配的问题。
  • 删掉之前配置里所有误用的pull指令。这个配置在你的场景里没有任何价值,还可能触发无意义的远端拉流请求,白白占用带宽。
  • 直接用本地的RTMP转WebRTC程序作为RTMP客户端,拉取Nginx上已经存在的推流地址作为输入源。目前所有主流的开源实时流媒体转换工具,都支持直接输入RTMP地址作为流输入,不需要等Nginx生成任何落地文件。这种方式取到的是Nginx实时转发的原始RTMP流,端到端延迟可以控制在几百毫秒级,完全满足你替代高延迟HLS的需求。
  • 如果你确实需要拿到Nginx侧的流数据落盘,只需要在RTMP应用块下开启录制指令,就可以把收到的RTMP流完整录制为音视频文件。但要注意,录制生成的是离线完整文件,不是实时流数据,完全不能用来做实时WebRTC转发的输入,只适合做存档使用。

内容的提问来源于stack exchange,提问作者wisdomtoothman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 12:36:03