You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX RTMP模块HLS_Variant功能失效,ffmpeg转流fname为空如何解决

问题排查&修复方案

1. 解决$name变量为空问题

  • 首先确认OBS推流地址格式合规:需填写为rtmp://服务器IP/Test/自定义流名,不能仅填到Test application层级,$name变量的取值就是你填写的自定义流名部分
  • 临时注释掉Test application下的on_publish、on_publish_done两行配置,重启nginx测试,排除认证脚本异常导致的参数丢失:若认证脚本未返回HTTP 200状态码,nginx-rtmp会中断推流参数解析,导致$name为空
  • 在最外层rtmp配置块中添加exec_options on;,开启exec类指令的变量解析能力,多数默认编译的nginx-rtmp模块默认关闭此开关,会导致变量无法正常解析

2. 解决替换固定流名后ffmpeg不启动问题

  • 检查执行权限:确认nginx运行用户有权限调用/usr/local/bin/ffmpeg,且有权限写入/tmp/Log.log,可执行以下命令验证:
    # 替换www为你的nginx运行用户
    sudo -u www /usr/local/bin/ffmpeg -version
    sudo chmod 766 /tmp/Log.log
    
  • 手动执行完整ffmpeg命令(将$name替换为实际推流名),排查参数错误:若推流无音频,需在ffmpeg参数中添加-an跳过音频编码,避免编码报错导致进程直接退出

3. HLS Variant配置补充修正

当前配置缺少分辨率参数,部分播放器无法正常识别多码率列表,可调整为:

application Z006 {
    live on;
    record off;

    hls on;
    hls_path /usr/local/www/stream/tmp/hls0;
    hls_nested on;
    # 新增切片配置降低延迟
    hls_fragment 2s;
    hls_playlist_length 10s;

    hls_variant _low BANDWIDTH=288000 RESOLUTION=480x270;
    hls_variant _mid BANDWIDTH=832000 RESOLUTION=720x405;
    hls_variant _high BANDWIDTH=1152000 RESOLUTION=960x540;
    hls_variant _higher BANDWIDTH=2048000 RESOLUTION=1280x720;
    hls_variant _src BANDWIDTH=4096000;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:06:03