前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyPlayer-rtsp 如何配置向Server发送心跳信息?

EasyPlayer-rtsp 如何配置向Server发送心跳信息?

原创
作者头像
TSINGSEE青犀视频
修改2021-07-19 18:02:24
9970
修改2021-07-19 18:02:24
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

EasyPlayer播放器系列已经支持了H265编码视频的播放,根据用户在不同场景下的不同需求,我们已经有EasyPlayer-RTSP、EasyPlayer- RTMP、EasyPlayerPro 和EasyPlayer.js 等版本。

近期遇到一个客户在用EasyPlayer-rtsp WIN版本播放器播放雄迈的一款摄像机,起播后约30秒就不出流了,导致播放器无法正常工作;

经与客户沟通,发现一个可以复现的情况,就是每次起播后都是约30秒不能播放,或者断开后重新起播又可以播30秒,初步推断应该是保活机制的问题;带着猜测尝试修复这个问题;大家都知道EasyPlayer-rtsp播放器底层是依赖EasyRTSPClient实现的拉流,打开拉流动作接口如下:

/* 打开网络流 */

Easy_API int Easy_APICALL EasyRTSP_OpenStream(Easy_RTSP_Handle handle, int _channelid, char *_url, EASY_RTP_CONNECT_TYPE _connType, unsigned int _mediaType, char *_username, char *_password, void *userPtr, int _reconn/*1000表示长连接,即如果网络断开自动重连, 其它值为连接次数*/, int outRtpPacket/*默认为0,即回调输出完整的帧, 如果为1,则输出RTP包*/, int heartbeatType/*0x00:不发送心跳 0x01:OPTIONS 0x02:GET_PARAMETER*/, int _verbosity/*日志打印输出等级,0表示不输出*/);

EasyRTSPClient在设计之初就已经定义了相关命令交互的设计,看上面函数中 heartbeatType参数定义:

int heartbeatType/*0x00:不发送心跳 0x01:OPTIONS 0x02:GET_PARAMETER*

当给heartbeatType传1时,会定时向Server发送心跳信息;

再遇到此类RTSPSERVER需要Session保活检测机制的时候,我们需要将heartbeatType参数值传1。

不过此处值得注意的是,并不是所有的RTSPServer都做的那么好,就比如海康的某些IPC/NVR型号,当RTSPClient在拉流的过程中,突然发送OPTIONS保活报文,就像是发送了一个垃圾数据一样,RTSPServer自动就将整条RTSP连接断开了,导致RTP取流也随着停止了,我们只能在这类设备中,选择不发送OPTIONS保活包。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档