【nginx-rtmp】01、控制模块(Control module)

本文介绍了RTMP控制模块的功能及使用方法,包括记录/录制、移除/中断和重定向/重置三个子模块的详细配置示例。适用于希望了解如何通过HTTP控制RTMP流的应用开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制模块(Control module)

控制模块是http模块,可在外部通过http对rtmp模块进行控制,下面是启用控制模块的示例:

http {
...
    server {
        listen      8080;
        server_name  localhost;
        ....
        location /control {
            rtmp_control all;
        }
    }
}

控制模块内有几个子模块,每个子模块控制不同的功能!


记录/录制(Record)

这个子模块,可以控制记录的启动或者停止,语法如下:

http://server.com/control/record/start|stop?
srv=SRV&app=APP&name=NAME&rec=REC

  • srv=SRV         -  可选,表示 rtmp{} 块里面  server{} 块的序号,默认是第一个 server{} 块
  • app=APP        -  必需,application 名称
  • name=NAME  -  必需, stream 名称
  • rec=REC          -  可选,recorder 名称,默认是root(unnamed) recorder

配置示例如下:

rtmp {
    server {
        listen 1935;
        application myapp {
            live on;
            recorder rec1 {
              record all manual;
              record_suffix all.flv;
              record_path /tmp/rec;
              record_unique on;
          }
      }
    }
}

然后可以用下面命令推送流:

ffmpeg -i http://someserver.com/mychannel.ts -c:v copy -c:a nellymoser -ar 44100 -ac 1 -f flv rtmp://localhost/myapp/mystream

使用下面命令来启动或停止记录:

curl "http://localhost:8080/control/record/start?app=myapp&name=mystream&rec=rec1"
curl "http://localhost:8080/control/record/stop?app=myapp&name=mystream&rec=rec1"

有时候上面命令请求后没有返回结果,请检查下服务端是否使用了多个 worker,使用一个效果好点!



移除/中断(Drop)

这个子模块,提供一个简单方式来删除某个客户端的链接,语法如下:

http://server.com/control/drop/publisher|subscriber|client?
srv=SRV&app=APP&name=NAME&addr=ADDR&clientid=CLIENTID

  • srv、app、name   - 这三个参数同上(Record)
  • addr  -  可选,客户端IP地址(和 rtmp_start返回的一样)
  • clientid  - 可选,nginx的client id(在 log 和 stat 里有显示)

第一个方法 drop/publisher 用来中断发布者链接,
第二个方法 drop/client 中断所有符合 addr 参数的链接,如果不指定 addr 参数,将会中断所有客户端链接(包括发布者)。

请求示例:

curl http://localhost:8080/control/drop/publisher?app=myapp&name=mystream
curl http://localhost:8080/control/drop/client?app=myapp&name=mystream
curl http://localhost:8080/control/drop/client?app=myapp&name=mystream&addr=192.168.0.1
curl http://localhost:8080/control/drop/client?app=myapp&name=mystream&clientid=1



重定向/重置(Redirect)

重置 点播源/主播 (play/publish) 到一个新的流(stream),语法:

http://server.com/control/redirect/publisher|subscriber|client?
srv=SRV&app=APP&name=NAME&addr=ADDR&clientid=CLIENTID&newname=NEWNAME

  • srv、app、name、addr、clients   - 和上面的一样(Record/Drop)
  • nawname   - 要重定向到的新的流名称(new stream name to redirect to)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值