【音视频】 zlm的几个代理接口解释

文章介绍了ZLMediaKit服务中的几个关键API,包括添加拉流代理(addStreamProxy)、推流代理(addStreamPusherProxy)、FFmpeg源(addFFmpegSource)、开启RTP服务器(openRtpServer)和开始发送RTP(startSendRtp)。这些API用于实现流媒体的代理、转发和播放功能,支持RTMP、RTP协议,并涉及ffmpeg工具的使用。通过secret参数确保安全,可用于构建灵活的流媒体解决方案。

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

目录

12、/index/api/addStreamProxy

界面上

30、/index/api/addStreamPusherProxy

14、/index/api/addFFmpegSource

24、/index/api/openRtpServer

27、/index/api/startSendRtp

推流列表

参考


12、/index/api/addStreamProxy

拉流代理 : 194上在播放。 而10.30.2.6上加上这个拉流,
意义: 都是可以代理一下,可以着手播放了。如wvp上,就代理配置一下,就可以播放了。因为自己的业务平台播放器只适应自己的播放格式 

{{ZLMediaKit_URL}}/index/api/addStreamProxy?secret={{ZLMediaKit_secret}}&vhost={{defaultVhost}}&app=live&stream=test&url=rtmp://10.60.100.194:10935/rtp/34010000001180000002_34020000001310000002
返回 : {
    "code": 0,
    "data": {
        "key": "__defaultVhost__/live/test"
    }
}
就可以以: ffplay rtmp://10.30.2.6:10935/live/test  来播放了。

而wvp上的拉流,灵活处在于它可以加其它的zlm 结点作为最终的代理(播放地址)。

 

界面上

操作一个194的流到192上,是这样的

192看到了,并且 ffplay rtmp://10.60.100.192:10935/2222/222 也能放了

推到194上的源流是:

 

 

30、/index/api/addStreamPusherProxy

推流代理 : 就是把本服务上的 已经有的live/test2服务  推到另一台zlm 上去rtmp://10.60.100.196:1935/live/test2
{{ZLMediaKit_URL}}/index/api/addStreamPusherProxy?secret={{ZLMediaKit_secret}}&schema=rtmp&vhost={{defaultVhost}}&app=live&stream=test2&dst_url=rtmp://10.60.100.196:1935/live/test2
返回:
{
    "code": 0,
    "data": {
        "key": "rtmp/__defaultVhost__/live/test2/997524c9d685c835ebe7823fe1c278e1"
    }
}

然后就可以通过 >ffplay rtmp://10.60.100.196:1935/live/test2  来播放了

14、/index/api/addFFmpegSource


ffmpeg推流代理 也是相当于ffmpeg -re -i http://www.login-wifi.com/gmes/11.mp4 -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv rtmp://10.30.2.6:10935/live/test3
只是这个api有点问题
{{ZLMediaKit_URL}}/index/api/addFFmpegSource?secret={{ZLMediaKit_secret}}&src_url= http://www.login-wifi.com/gmes/11.mp4&dst_url=rtmp://127.0.0.1:1935/live/test3&timeout_ms=10000&enable_mp4=0

24、/index/api/openRtpServer

创建好端口后,就允许ffmpeg向此服务器推流。注意我的docker 30040这么大的只开放了udp,所以请使用enable_tcp=0

ffmpeg -re -i 11.mp4 -vcodec h264  -f rtp_mpegts rtp://10.30.2.6:30040

{{ZLMediaKit_URL}}/index/api/openRtpServer?secret={{ZLMediaKit_secret}}&port=0&enable_tcp=0&stream_id=test

返回:

{

    "code": 0,

    "port": 30040

}

可以播放:  ffplay rtsp://10.30.2.6:10554/rtp/test

27、/index/api/startSendRtp

注意它也是将本服务器的流推到另外的服务器

推流列表

 关键点,加入secret才允许;zlm 通过hook让wvp知道,从而就有了推流列表

ffmpeg.exe -f dshow -i audio="麦克风 (Realtek High Definition Audio)" -rtbufsize 1000M -thread_queue_size 1024 -f dshow   -i video="XiaoMi USB 2.0 Webcam"  -vcodec libx264   -acodec aac -f flv rtmp://10.60.100.194:10935/test/live?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc

参考

MediaServer支持的HTTP API · ZLMediaKit/ZLMediaKit Wiki (github.com)

### Spring Boot与ZLMediaKit集成实现视频录制 为了在Spring Boot项目中集成ZLMediaKit并实现视频录制功能,需完成几个重要配置和编码工作。首先,在构建工具(Maven或Gradle)中的`pom.xml`文件里加入必要的依赖项来支持HTTP请求处理以及可能的FFmpeg操作,因为ZLMediaKit本身并不提供Java SDK,所以通常会借助命令行调用或其他中间件服务来进行交互。 对于基于RESTful API的方式访问ZLMediaKit服务器,可以利用Spring框架自带的支持轻松发起GET/POST等类型的网络请求[^1]: ```java import org.springframework.web.client.RestTemplate; public class ZLMediaKitClient { private static final String BASE_URL = "http://your_zlm_server_ip:port"; public void startRecord(String streamId, String savePath){ RestTemplate restTemplate = new RestTemplate(); String url = BASE_URL + "/index/api/start_record?stream_id=" + streamId +"&save_path="+savePath; ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); if(responseEntity.getStatusCode().is2xxSuccessful()){ System.out.println("Start record success"); }else{ System.err.println("Failed to start record"); } } } ``` 上述代码展示了如何创建一个简单的客户端类用于启动指定流ID(`streamId`)到特定路径(`savePath`)下的录像过程。需要注意的是实际部署环境应替换掉示例中的IP地址端口部分,并确保目标机器上已安装配置好ZLMediaKit服务实例[^2]。 此外,还需要考虑安全性方面的问题比如身份验证机制;性能优化措施如异步非阻塞I/O模型的应用;错误重试策略的设计等等。这些都属于更高级的话题,但在生产环境中都是不可或缺的部分。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dualven_in_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值