zoukankan      html  css  js  c++  java
  • EasyPlayer-rtsp 如何配置向Server发送心跳信息?

    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保活包。

  • 相关阅读:
    美达飞凡16X DVD起死回生记
    vs2k5 中asp.net "Web Site Administration Tool "使用中遇到的问题
    有关sqlserver的锁
    基于dotnet2.0的联通sgip1.2协议二级网关源码
    .net winform下TreeNode在没有子结点时也显示+号的解决办法
    小胜凭智, 大胜靠德
    寄语八十年代的新一代
    PHP+APACHE+MYSQL+WINDOWS 环境配置秘笈,一定行!!!!
    JS获取当前屏幕分辨率
    godaddy免费空间安装wordpress教程之500错误的解决办法/读写权限修改
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/15036105.html
Copyright © 2011-2022 走看看