Windows/Android/iOS平台H265编码视频播放器EasyPlayerRTSP中socket选项之keepalive设置介绍

TSINGSEE青犀视频云边端架构视频平台中有很多可以供二次开发调用的接口,使用频率比较高的其中一个就是视频流保活接口,保活就是通过应用层的机制,实现流媒体的不停输出视频流(保活接口是什么?如何通过保活让RTSP、RTMP、GB28181协议视频平台持续输出视频流)。

当然也有很多用户使用EasyPlayer RTSP播放器控件进行自己平台的集成,在这种集成下,怎么配置播放器发送keep alive报文呢?本文我们就来分享一下。

EasyPlayer RTSP播放器底层是基于EasyRTSPClient库封装起来的,在设计之初就已经考虑预留了相关接口参数,把openStream的heartbeatType参数值置1就可以,接口函数定义如下:

/* 打开网络流 */
EasyRTSP_OpenStream(Easy_Handle handle, int _channelid, char *_url, EASY_RTP_CONNECT_TYPE _connType, unsigned int _mediaType, char *_username, char *_password, void *userPtr, int _reconn, int outRtpPacket, int heartbeatType, int _verbosity);

EasyRTSPClient是基于Live555改造起来的RTSP拉流客户端,能非常方便实现部分功能的定制,科普一下本文重点提到的OPTIONS发送的问题。

当我们采用RTP over UDP/TCP方式在取流的过程中,RTSPClient(live555)可能长时间都在从RTSPServer(IPC/NVR)取流,但缺没有向RTSPServer发送保活报文,如果服务器端启动了Session保活检测机制(参看live555中RTSPServer中noteliveness实现),服务器端长时间没有收到客户端发送的数据包,就会认为客户端连接是假连接,主动断开与客户端的连接(不管客户端是否正在取流);大部分的RTSPClient客户端都会定时(例如30s)向RTSPServer发送OPTIONS(有的也有可能发送的是GET_PARAMETER)命令,类似于保活报文,这样服务器端就能正常地发送直播数据流了。

TSINGSEE青犀视频云边端架构产品繁多,能够满足大部分行业以及应用场景中的安防监控平台搭建,包括视频智能分析平台以及视频流媒体播放器,当然也提供视频推流组件、同屏功能组件等辅助工具。如果大家有兴趣,欢迎联系我们了解。

原文地址:https://www.cnblogs.com/TSINGSEE/p/14062342.html