ZLMediaKit实现按需拉流时rtsp流地址不对addStreamProxy返回0,接口流id参数踩坑记录

发布时间 2023-04-21 11:36:43作者: 霸道流氓

场景

开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245

基于上面实现拉取视频流预览时,发现当调用api传参时如果更换了rtsp视频流地址,但是没有

更改流id,仍会返回之前的流。

比如调用api时传递

http://10.229.36.31:800/index/api/addStreamProxy?vhost=10.229.36.31&app=live&stream=2&url=rtsp://10.229.36.31:8554/stream&secret=035c73f7-bb6b-4****

如果该rtsp流能预览,则接口返回0

如果修改了rtsp流地址,没有修改流id,比如

http://10.229.36.31:800/index/api/addStreamProxy?vhost=10.229.36.31&app=live&stream=2&url=rtsp://10.229.36.31:8554/stream1&secret=035c73f7-bb6b-4****

那么会返回与上面一样的数据。

所以当rtsp流地址修改时,流id同样也要进行修改。

另外关于http接口超时时间与rtsp拉流等超时时间的设置。

为了避免rtsp流还未拉流成功,http接口提前响应,需要合理设置rtsp的超时时间与http的超时时间。

一个是配置文件config.ini中配置,详情见官方文档

https://github.com/zlmediakit/ZLMediaKit/blob/master/conf/config.ini

#http链接超时时间
keepAliveSecond=30

 

#rtsp必须在此时间内完成握手,否则服务器会断开链接,单位秒
handshakeSecond=15
#rtsp超时时间,如果该时间内未收到客户端的数据,
#或者tcp发送缓存超过这个时间,则会断开连接,单位秒
keepAliveSecond=15

 

另外在调用addStreamProxy接口时传递拉流超时时间