多引擎网页视频播放器(支持多路):基于跨浏览器的原生小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )网络高级版开发,底层可调用海康的设备网络SDK(https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10)和开源LibVLC支持库(需安装VLC media player或搭配绿色版VLC桌面程序2.2及以上版本)实现播放。最低可用在Chrome 41、Firefox 50、Edge 80(Chromium内核)、360极速/安全、IE 8、Opera、Electron、Vivaldi、Brave、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本,建议在Windows 7及以上版本使用,XP下VLC建议用2.2.8版,XP以上系统建议使用3.0.17.3版本。 本小程序具有如下优点: 1)、全市场可实现较低延迟(200毫秒左右)的首选播放方案,主流版本的浏览器都支持; 2)、支持多路同时实时播放、回放、支持帧回退、支持下一帧、支持抓图、录屏、高清视频或大屏播放性能好; 3)、底层播放技术采用海康设备网络SDK(版权归原厂家,最终用户需获得原厂使用授权),支持海康私有协议及RTSP流播放、云台控制、语音对讲等,支持H.264和H.265; 4)、播放小程序额外付费后可获得源代码进行定制开发; 5)、支持海康的摄像头和硬盘录像机等各系列的设备; 6)、支持本地MP4等视频文件和RTSP、RTMP、MMS等网络流播放。 适用于但不仅限于以下海康产品型号: DVR:DS-9100、DS-8100、DS-8000-S、DS-8800、DS-7800、DS-7300、DS-7200、DS-7100、DS-7000 等系 列,包括-ST、-SH、-SE、-SN、-RT、-RH、-XT 等。 NVR:DS-96000N-I24/I16、DS-96000N-F24/F16(/H)(/I)、DS-96000N-H24/H16(/H)(/I)、DS-9600N-I8/H8/F8/ST/XT、 DS-8600N-I8/H8/F8/E8/ST/XT、DS-7800N-E1/SN/SNH、DS-7600N-ST/E2/E1、DS-7700N-ST/E4、DS-9500N-ST、 DS-9500N-S、DS-9600N-SH、DS-7600N-S、DS-9664N-RX 等。 XVR:DS-9000HQH-SH、DS-8100HQH(/HGH)-SH、DS-8000HQH-SH、DS-7300HQH(/HGH)-SH、 DS-7200HQH(/HGH)-SH、DS-8800HQH(/HGH)(/HUH)-SH(/Fx)、DS-7900HQH(/HGH)(/HUH)-SH(/Fx)、 DS-7800HQH(/HGH)(/HUH)-SH(/Ex/Fx)、DS-7100HGH-E1(/F1)等。 HDVR(混合型 DVR):DS-9000、DS-8000-ST、DS-7600H-ST/-S 系列等 文件播放支持私有、PS、TS、3GP、AVI等封装的录像文件格式,支持的视频编码格式包括私有H.264编码、标准H.264、mpeg2、mpeg4、mjpeg、H.265、SVAC、Smart264、Smart265等,音频格式包括G.711、G.722、G.726、MPEG、AAC、PCM等。 1、牛插(PluginOK)中间件的安装: 1)、如果是exe的安装程序,请直接运行安装; 2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; 3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有ZbaService.txt日志文件输出运行情况。 2、多引擎网页视频播放器控制相关接口: 说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost:83?sid=12345&flag=1)后可执行,如默认侦听端口不是83(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.pdf”),请在连接地址中指定端口号进行连接。 HTTP网页在线测试:http://local.zorrosoft.com/HKFrame.html HTTPS网页在线测试:https://local.zorrosoft.com/HKFrame.html 如还需兼容IE浏览器使用,网络版测试网页中 的CLSID需要替换为:21ADE2E6-B4DD-4F3E-8BD5-9DDAD1785F3A 前端集成可参考以上测试网页进行需要嵌入用到的JS脚本,脚本程序是完全开源的。 播放窗口选中状态时双击或按字母F即可全屏显示,全屏显示状态通过ESC、Windows按键、ESC或字母F取消,全屏切换会发送JSON包的Player_FullScreen通知。 1)、请求启动多引擎网页视频播放器: Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(1代表IE 2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) Title:网页标题中的关键词 Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 Version播放小程序版本,0在播放小程序中播放,1在独立进程中播放 ShowType 播放窗口分屏类型,默认1只显示一个播放窗口,支持1-22 24 25等多达20种多窗口播放 Url:加载小程序所在的网页实际地址,在网页中指定小程序的显示位置和大小,分屏多窗口播放地址和选项等 IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 BarW和BarH分别是网页右侧和底部预留区域,ScrollTop为顶部滚动预留高度 小程序实际显示首先会基于Web或Url网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 Option:播放参数,多个参数中间用空格区分 PlayEngine=2 指定用LibVLC引擎播放,默认=0是采用海康SDK私有协议播放,=1是采用海康MP4本地文件播放引擎播放 AutoLoop=1 指定是否循环播放,1循环 Caching=30 指定网络缓存时间30代表300毫秒 Server=8000 指定海康SDK私有协议播放服务器端口,非8000时设置 仅对PlayEngine=0有效 Stream=1 指定流类型 0是主码流,1是子码流 仅对PlayEngine=0有效 Link=1 指定连接类型 0是TCP方式 1是UDP方式 PlayEngine=1时无效 Mute=1 指定是否静音播放 1是静音 FrameCache=20 指定是否按帧播放 0否,大于0代表按帧播放时最大缓存帧数量 仅对PlayEngine=2有效 AudioColumn=1 指定是否通知音柱信息 1推送 仅对PlayEngine=2有效 ToolBar=1 指定是否显示播放工具栏 1是显示 Web:播放配置(新增方式),可代替Url使用,Flag值+64使用此配置,此命令中必须指定Left、Top、Width、Height的值 Open :启动后第一个窗口自动播放的流地址或本地多媒体文件路径,斜杠\替换成/再传,也可以在Web中指定 注意:Open、Url、Web中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递 如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 举例: 自动识别当前浏览器指定位置和大小启动: {"req":"Wrl_VideoWebPlayer","rid":2,"para":{"Type":"0","Title":"HK Web Player","Flag":2,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Url":"http://local.zorrosoft.com/HKFrame.html","ShowType":1,"Open":""rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"}} 自动识别当前浏览器指定位置和大小启动(不需要Url参数): {"req":"Wrl_VideoWebPlayer","rid":4,"para":{"Type":"0","Title":"HK Web Player","Flag":66,"Left":20,"Top":230,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Version":"0","ShowType":4,"Open":"https://vjs.zencdn.net/v/oceans.mp4","Web":[{"ID":2,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Option":"Link=1"},{"ID":3,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Option":"Link=0"},{"ID":4,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/sub/av_stream","Option":"Caching=1"}]}} 自动识别当前浏览器充满网页区显示(不需要Url参数): {"req":"Wrl_VideoWebPlayer","rid":3,"para":{"Type":"0","Title":"HK Web Player","Flag":72,"Left":0,"Top":0,"Width":0,"Height":0,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Version":"0","ShowType":1,"Web":[],"Open":""rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"}} 启动后会先后收到三个JSON数据包 A、{"ret":0,"rid":1,"data":{"ID":2}} 代表小程序WS侦听服务就绪 B、{"event":"Wrl_Listen","aid":2,"data":{"SID":"123","PID":"HKWebPlayer","port":920}} 返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新播放一个Player。 代表小程序创建成功,返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 C、{"event":"Wrl_AppletOK","aid":2,"rid":1,"data":{"SID":"123","PID":"HKWebPlayer","Port":920}} 由于依赖VLC桌面程序,所以可以提前调用以下接口获得VLC等播放器的安装情况,如未安装,可先提示下载安装 {"req":"Wrl_PlayerInfo","rid":1,"para":{}} 获得当前电脑VLC桌面播放器安装的情况,返回值 {"ret":0,"rid":1,"req":"Wrl_PlayerInfo","data":{"Info":[{"Type":1,"X64":1,"Ver":"3.0.17.4","Path":"C:/Program Files/VideoLAN/VLC/vlc.exe"}]}} Type 1 代表VLC X64 代表是否为64位版本 Ver 代表文件版本信息 Path 安装路径 2)、请求控制多引擎网页视频播放器: 当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等 ID为启动小程序时返回的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,设置4和32隐藏后可通过8恢复显示 {"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} 3)、请求滚动网页中多引擎网页视频播放器: 当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动 ID为启动小程序时返回JSON中的ID值 Code为滚动方向1是水平,2是垂直,3是同时 Left为横向滚动条位置,Top为纵向滚动条位置 {"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} 4)、请求改变网页中多引擎网页视频播放器显示位置或大小: 当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小 ID为Wrl_VideoWebPlayer启动小程序时返回JSON中的ID值,Width和Height分别为新的宽度和高度 X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效 {"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}} 或,同时修改小程序显示起始坐标 {"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}} 5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置: 当小程序显示区域超过当前网页时,需去除滚动条的显示影响 ID为启动小程序时返回JSON中的ID值,BarW为预留右侧宽度 BarH为预留底部高度 Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有 ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置 {"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}} 6)、请求对小程序窗口做Alpha透明处理,便于前端临时显示覆盖到小程序窗口的菜单等: ID为Wrl_VideoWebPlayer启动小程序时返回的ID值,Alpha为透明度百分比,1-100 {"req":"Wrl_AppletAlpha","rid":7,"para":{"ID":1,"Alpha":30}} 7)、请求对小程序窗口内容进行截图: ID为启动小程序时返回JSON中的ID值, File为指定截图文件保存路径或扩展名 Base64指定为1时代表返回BASE64编码的图像内容 {"req":"Wrl_AppletSnap","rid":10,"para":{"ID":1,"Base64":1,"File":".png"}} 8)、请求缩放内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理: ID为启动小程序时返回JSON中的ID值,不指定Scale时,获取当前小程序所用的缩放百分比,一般和系统缩放比例一致 {"req":"Wrl_AppletScale","rid":11,"para":{"ID":1,"Scale":120}} 3、小程序安装、升级、卸载 1)、请求安装多引擎网页视频播放器 请在测试网页输入框中,输入如下请求,然后点击发送,完成安装: {"req":"Plugin_Install","rid":1,"para":{"Name":"PageHi多引擎视频网页播放器","PID":"VideoWebPlayer","Date":"2022-09-19","Desc":"PluginOK之上跨浏览器的多引擎视频网页播放器,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中低延迟多路播放RTSP流","DownAddr":"http://local.zorrosoft.com/Files/Net/VideoWebPlayer.pid","MD5":"D0597352B9325FD5441E630F10381284","Version":"2.2.7.8","Size":4292608,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"A947AEBAF03C51F8E8EA546EA18C98F8BE945BDD8F64F61E2663359609DB65340A6EF491D88278C918F6C4C20BB78C95EB1B550C4AEB14D9EC67ADAF4142F4EA795BD068FBEC6B818E52C27F7390D09D5B91916081B68E90EAB2BA762E54F7EB2875E09E6C3709BA7257172817630E438D963A46888C977A0287ED3F8CD9F29E3FE2CB0924A6BB58371049179A2C7D7AA5AE9C41179CA683B6DCA87D64D00BA36AA4D1383EFFD24CC12BDB8636C10AC399E8158111E94853852EA5CE63E1D7B10B673B804C872DA29003297BADA8DAAF47918B881040BA8E2BCFF312DA8B76CFCD4707FA2565F75DC64883D6D2965CA5ED07221E5A4A1B9EAD1CBE2CF57B885B"}} 启动安装后,会不断收到安装进度直到安装结束。 2)、请求升级多引擎网页视频播放器: {"req":"Plugin_Update","rid":1,"para":{"Name":"PageHi多引擎视频网页播放器","PID":"VideoWebPlayer","Date":"2022-09-19","Desc":"PluginOK之上跨浏览器的多引擎视频网页播放器,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中低延迟多路播放RTSP流","DownAddr":"http://local.zorrosoft.com/Files/Net/VideoWebPlayer_Update.pid","MD5":"B75D8B11D9DC9E3DFA7737AC92E549C3","Version":"2.2.7.8","Size":4292608,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"32FB4F0AB4C16A4C420A11946CE3B7B83AE3A613860469562201B313239ED7079466EB5744EA7CE60EB6AFC59EDFB4E0576D5A22B45C2051540FAB988AA0409CBA2D5FAEC35A37669DA616C952C051D9524AF52049D31E4CAF8CC0FCD7FF51DDC52A851AA0D12D9220046946BB3611747B8072763253584872A687824AD78D4B96F37F637F4C7C1509657481BD507F947A66E359439402EE254119638B12C12508E49A7DFC81A334DD7794972E1EFFF6D4626DD307AFFC13CC93FC5C7683851B96674FDFC83CECD4CFE308AD73AC4A8C706109CA914E0BF6B01194928E505A116638703C25FE2BB4AEEF88C3A89DE2EBB395DAFE00930322201576C16C2B3711"}} 以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 3)、请求卸载多引擎网页视频播放器: 正式版需要添加TK校验,具体规则请参考SDK包中文档“PluginOK中间件安全解决方案.pdf”,可在SDK包中的打包程序ZbaPackage.exe的中间件维护生成带TK的请求。 {"req":"Plugin_Remove","rid":3,"para":{"PID":"HKWebPlayer","Type":8}} 4、多引擎网页视频播放器转调用海康原生SDK封装的ActiveX控件HKVideoCom的接口,先根据Wrl_VideoWebPlayer请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令: A、常用功能请求: 1) 取指定ID播放窗口属性AutoLoop(自动循环播放)值,仅对MP4等文件播放有效 请求:{"req":"Player_GetAutoLoop","rid":41,"para":[{"ID":1},{"ID":2}]} 返回:{"ret":0,"rid":41,"ID":1,"data":{"Ret":0,"AutoLoop":0}} 和 {"ret":0,"rid":41,"ID":2,"data":{"Ret":0,"AutoLoop":0}} ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同 Ret为调用ActiveX对应函数返回值,0代表正常 AutoLoop为1代表循环播放,0不循环 2) 设置指定ID窗口AutoLoop(自动循环播放)值,仅对MP4等文件播放有效 请求:{"req":"Player_PutAutoLoop","rid":42,"para":[{"ID":1,"AutoLoop":1},{"ID":2,"AutoLoop":0}]} 分别返回:{"ret":0,"rid":42,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":42,"ID":2,"data":{"Ret":0}} 3) 取海康SDK的信息,包含版本号、对接及超时配置等信息 请求:{"req":"Player_GetSDKInfo","rid":43,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":43,"ID":1,"data":{"Ret":0,"Ver":"V6.1.6.45","Build":"20210302","GenCfg":{"SplitFile":0,"ResumeUpgrade":0,"ResumeTimeout":0},"OverTimeCfg":{"PreviewTime":5000,"VodTime":5000,"AlarmTime":5000,"ElseTime":5000},"TalkCfg":{"TalkMode":0}}} 4) 取指定ID窗口当前播放引擎 0私有协议 1海康MP4 2开源VLC 使用哪个引擎由启动播放参数决定 请求:{"req":"Player_PlayEngine","rid":44,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":44,"ID":1,"data":{"Ret":0,"Engine":0}} 和 {"ret":0,"rid":44,"ID":2,"data":{"Ret":0,"Engine":1}} 5) 取指定ID窗口当前是否异步播放 0私有协议播放有效 请求:{"req":"Player_GetAsynPlay","rid":45,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":45,"ID":1,"data":{"Ret":0,"AsynPlay":1}} 和 {"ret":0,"rid":45,"ID":2,"data":{"Ret":0,"AsynPlay":0}} 6) 设置指定ID窗口是否异步播放,调用播放前设置 0私有协议播放有效 请求:{"req":"Player_PutAsynPlay","rid":46,"para":[{"ID":1,"AsynPlay":1},{"ID":2,"AsynPlay":0}]} 分别返回:{"ret":0,"rid":46,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":46,"ID":2,"data":{"Ret":0}} 7) 取指定ID窗口当前播放网络缓存帧数 1-50 1实时性好;3实时性较好;6实时性中,15流畅性中 请求:{"req":"Player_GetCaching","rid":47,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":47,"ID":1,"data":{"Ret":0,"Caching":3}} 和 {"ret":0,"rid":47,"ID":2,"data":{"Ret":0,"Caching":1}} 8) 设置指定ID窗口当前播放网络缓存帧数,调用播放前有效 请求:{"req":"Player_PutCaching","rid":48,"para":[{"ID":1,"Caching":3},{"ID":2,"Caching":1}]} 分别返回:{"ret":0,"rid":48,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":48,"ID":2,"data":{"Ret":0}} 9) 取当前连接类型 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-RTP/RTSP,5-RSTP/HTTP 请求:{"req":"Player_GetLinkMode","rid":49,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":49,"ID":1,"data":{"Ret":0,"LinkMode":1}} 和 {"ret":0,"rid":49,"ID":2,"data":{"Ret":0,"LinkMode":0}} 10) 设置连接类型,调用播放前设置有效 请求:{"req":"Player_PutLinkMode","rid":50,"para":[{"ID":1,"LinkMode":1},{"ID":2,"LinkMode":0}]} 分别返回:{"ret":0,"rid":50,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":50,"ID":2,"data":{"Ret":0}} 11) 取当前流类型 码流类型,0-主码流,1-子码流,2-码流3,3-码流4, 4-码流5,5-码流6,7-码流7,8-码流8,9-码流9,10-码流10 请求:{"req":"Player_GetStreamType","rid":51,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":51,"ID":1,"data":{"Ret":0,"StreamType":1}} 和 {"ret":0,"rid":51,"ID":2,"data":{"Ret":0,"StreamType":0}} 12) 设置当前流类型,非本地文件、调用播放前设置有效 请求:{"req":"Player_PutStreamType","rid":52,"para":[{"ID":1,"StreamType":1},{"ID":2,"StreamType":0}]} 分别返回:{"ret":0,"rid":52,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":52,"ID":2,"data":{"Ret":0}} 13) 取当前协议类型 应用层取流协议,0-私有协议,1-RTSP协议,2-SRTP码流加密(对应此结构体中dwLinkMode 字段,支持如下方式, 为1,表示udp传输方式,信令走TLS加密,码流走SRTP加密,为2,表示多播传输方式,信令走TLS加密,码流走SRTP加密) 请求:{"req":"Player_GetProtoType","rid":53,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":53,"ID":1,"data":{"Ret":0,"ProtoType":0}} 和 {"ret":0,"rid":53,"ID":2,"data":{"Ret":0,"ProtoType":1}} 14) 设置当前协议类型,非本地文件、调用播放前设置有效 请求:{"req":"Player_PutProtoType","rid":54,"para":[{"ID":1,"ProtoType":1},{"ID":2,"ProtoType":0}]} 分别返回:{"ret":0,"rid":54,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":54,"ID":2,"data":{"Ret":0}} 15) 取指定ID窗口设备信息,仅对连接海康硬件设备登录成功后有效 请求:{"req":"Player_GetDeviceInfo","rid":55,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":55,"ID":1,"data":{"Ret":0,"SerialNumber":"DS-3SC3Q150MY-TE20200620AACHG56168112"}} 和 {"ret":0,"rid":55,"ID":2,"data":{"Ret":-2147467262,"SerialNumber":""}} 16) 异步登录设备,仅对连接海康硬件设备有效,本地MP4文件播放无需登录,登录结果通过事件接收 请求:{"req":"Player_Login","rid":56,"para":[{"ID":1,"Server":"admin:test123456@192.168.1.9:8000"},{"ID":2,"Server":"admin:test123456@192.168.1.8:8000"}]} 分别返回:{"ret":0,"rid":56,"ID":1,"data":{"Ret":0,"LoginID":1}} 和 {"ret":0,"rid":56,"ID":2,"data":{"Ret":0,"LoginID":2}} LoginID为登录标识,登录结果事件中携带 17) 取指定ID窗口播放文件时长,仅对本地MP4等文件打开播放后有效 请求:{"req":"Player_GetFileTime","rid":57,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":57,"ID":1,"data":{"Ret":0,"FileTime":12}} 和 {"ret":0,"rid":57,"ID":2,"data":{"Ret":0,"FileTime":0}} 18) 取指定ID窗口文件已播放时长,仅对本地MP4等文件打开播放后有效 请求:{"req":"Player_GetPlayedTime","rid":58,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":58,"ID":1,"data":{"Ret":0,"PlayedTime":12}} 和 {"ret":0,"rid":58,"ID":2,"data":{"Ret":0,"PlayedTime":0}} 19) 取指定ID窗口文件已播放帧数,仅对本地MP4等文件打开播放后有效 请求:{"req":"Player_GetPlayedFrames","rid":59,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":59,"ID":1,"data":{"Ret":0,"PlayedFrames":12}} 和 {"ret":0,"rid":59,"ID":2,"data":{"Ret":0,"PlayedFrames":0}} 20) 取指定ID窗口文件总播放帧数,仅对本地MP4等文件打开播放后有效 请求:{"req":"Player_GetTotalFrames","rid":60,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":60,"ID":1,"data":{"Ret":0,"TotalFrames":12}} 和 {"ret":0,"rid":60,"ID":2,"data":{"Ret":0,"TotalFrames":0}} 21) 取指定ID窗口文件播放百分比,仅对本地MP4等文件打开播放后有效 请求:{"req":"Player_GetPlayPercent","rid":61,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":61,"ID":1,"data":{"Ret":0,"Percent":12}} 和 {"ret":0,"rid":61,"ID":2,"data":{"Ret":0,"Percent":0}} 22) 设置指定ID窗口文件播放百分比,仅对本地MP4等文件打开播放后有效 请求:{"req":"Player_PutPlayPercent","rid":62,"para":[{"ID":1,"Percent":12},{"ID":2,"Percent":0}]} 分别返回:{"ret":0,"rid":62,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":62,"ID":2,"data":{"Ret":0}} 23) 指定ID窗口文件播放控制,MP4本地文件和海康回放流打开播放后有效 Type类型 默认1加速播放可多次调用 2降速播放可多次调用 3倒播 请求:{"req":"Player_FileControl","rid":63,"para":[{"ID":2,"Type":1}]} 分别返回:{"ret":0,"rid":63,"ID":1,"data":{"Ret":0}} 24) 指定ID窗口设备类型和序列号,本地MP4等文件播放无效 请求:{"req":"Player_GetDeviceType","rid":64,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":64,"ID":1,"data":{"Ret":0}} 25) 取指定ID窗口当前播放通道,本地MP4等文件播放无效 请求:{"req":"Player_GetCurChannel","rid":65,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":65,"ID":1,"data":{"Ret":0,"CurChannel":2}} 和 {"ret":0,"rid":65,"ID":2,"data":{"Ret":0,"CurChannel":1}} 26) 取指定ID窗口相关状态,本地MP4文件及VLC引擎播放登录状态无效,只有播放状态 请求:{"req":"Player_GetStatus","rid":66,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":66,"ID":1,"data":{"Ret":0,"LoginStatus":2,"PlayStatus":1,"SupportTalk":1}} 和 {"ret":0,"rid":66,"ID":2,"data":{"Ret":0,"PlayStatus":1}} 返回LoginStatus为海康私有协议登录状态 返回PlayStatus为当前播放状态,播放状态定义参考libvlc_state_t 返回是否支持对讲标识SupportTalk 海康私有协议播放有效 27) 指定ID窗口播放指定通道、本地文件或RTSP流地址,0私有协议播放需要先登录 指定Channel时为指定通道播放,指定Uri时,要么是本地路径文件,要么是服务器的RTSP流地址(包含回放地址) Uri中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递 Uri如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 需要注意的是比如已经启动播放本地MP4文件播放,那么这个窗口调用此接口时也只能切换本地MP4文件播放 请求:{"req":"Player_Play","rid":67,"para":[{"ID":1,"Channel":1},{"ID":2,"Uri":"d:/zorro/test.mp4"},{"ID":3,"Uri":"rtsp://192.168.1.8:554/h264/ch1/sub/av_stream","Option":"Stream=1"}]} 分别返回:{"ret":0,"rid":67,"ID":1,"data":{"Ret":0,"PlayID":1}} {"ret":0,"rid":67,"ID":2,"data":{"Ret":0,"PlayID":2}} 和 {"ret":0,"rid":67,"ID":3,"data":{"Ret":0,"PlayID":3}} PlayID为当前播放ID 28) 指定ID窗口播放控制,需要先调用播放 Type为控制类型,默认3暂停播放 2停止播放 4恢复播放 请求:{"req":"Player_Control","rid":68,"para":[{"ID":1,"Type":4},{"ID":2,"Type":2},{"ID":3,"Type":3}]} 分别返回:{"ret":0,"rid":68,"ID":1,"data":{"Ret":0,"Status":3}} {"ret":0,"rid":68,"ID":2,"data":{"Ret":0,"Status":5}} 和 {"ret":0,"rid":68,"ID":3,"data":{"Ret":0,"Status":4}} 其中Status为当前播放状态 播放状态定义参考libvlc_state_t 29) 指定ID窗口设置声音共享模式,需要先调用播放 AudioMode 1为独占 单路音频模式;2-共享声卡,多路音频模式 请求:{"req":"Player_SetAudioMode","rid":69,"para":[{"ID":1,"AudioMode":2},{"ID":2,"AudioMode":2}]} 分别返回:{"ret":0,"rid":69,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":69,"ID":2,"data":{"Ret":0}} 30) 指定ID窗口打开声音,本地MP4等文件播放需要先打开声音再播放,非本地MP4等文件播放需要先调用播放 请求:{"req":"Player_OpenSound","rid":70,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":70,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":70,"ID":2,"data":{"Ret":0}} 31) 指定ID窗口关闭声音,需要先调用打开声音 请求:{"req":"Player_CloseSound","rid":71,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":71,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":71,"ID":2,"data":{"Ret":0}} 32) 取当前音频音量 0-100,0代表静音,100最大音量 请求:{"req":"Player_GetAudioVolume","rid":72,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":72,"ID":1,"data":{"Ret":0,"AudioVolume":100}} 和 {"ret":0,"rid":72,"ID":2,"data":{"Ret":0,"AudioVolume":0}} 33) 设置当前音频音量 0-100,0代表静音,100最大音量 请求:{"req":"Player_PutAudioVolume","rid":73,"para":[{"ID":1,"AudioVolume":0},{"ID":2,"AudioVolume":100}]} 分别返回:{"ret":0,"rid":73,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":73,"ID":2,"data":{"Ret":0}} 34) 指定ID窗口进行云台控制,需要先调用播放,0私有协议播放有效 Type为云台控制类型 PTZTYPE_LIGHT_PWRON = 2, /// 接通灯光电源 PTZTYPE_WIPER_PWRON = 3, /// 接通雨刷开关 PTZTYPE_FAN_PWRON = 4, /// 接通风扇开关 PTZTYPE_HEATER_PWRON = 5, /// 接通加热器开关 PTZTYPE_AUX_PWRON1 = 6, /// 接通辅助设备开关 PTZTYPE_AUX_PWRON2 = 7, /// 接通辅助设备开关 PTZTYPE_SET_PRESET = 8, /// 设置预置点 PTZTYPE_CLE_PRESET = 9, /// 清除预置点 PTZTYPE_ZOOM_IN = 11, /// 焦距以速度SS变大(倍率变大) PTZTYPE_ZOOM_OUT = 12, /// 焦距以速度SS变小(倍率变小) PTZTYPE_FOCUS_NEAR = 13, /// 焦点以速度SS前调 PTZTYPE_FOCUS_FAR = 14, /// 焦点以速度SS后调 PTZTYPE_IRIS_OPEN = 15, /// 光圈以速度SS扩大 PTZTYPE_IRIS_CLOSE = 16, /// 光圈以速度SS缩小 PTZTYPE_TILT_UP = 21, /// 云台以SS的速度上仰 PTZTYPE_TILT_DOWN = 22, /// 云台以SS的速度下俯 PTZTYPE_PAN_LEFT = 23, /// 云台以SS的速度左转 PTZTYPE_PAN_RIGHT = 24, /// 云台以SS的速度右转 PTZTYPE_UP_LEFT = 25, /// 云台以SS的速度上仰和左转 PTZTYPE_UP_RIGHT = 26, /// 云台以SS的速度上仰和右转 PTZTYPE_DOWN_LEFT = 27, /// 云台以SS的速度下俯和左转 PTZTYPE_DOWN_RIGHT = 28, /// 云台以SS的速度下俯和右转 PTZTYPE_PAN_AUTO = 29, /// 云台以SS的速度左右自动扫描 PTZTYPE_FILL_PRE_SEQ = 30, /// 将预置点加入巡航序列 PTZTYPE_SET_SEQ_DWELL = 31, /// 设置巡航点停顿时间 PTZTYPE_SET_SEQ_SPEED = 32, /// 设置巡航速度 PTZTYPE_CLE_PRE_SEQ = 33, /// 将预置点从巡航序列中删除 PTZTYPE_STA_MEM_CRUISE = 34, /// 开始记录轨迹 PTZTYPE_STO_MEM_CRUISE = 35, /// 停止记录轨迹 PTZTYPE_RUN_CRUISE = 36, /// 开始轨迹 PTZTYPE_RUN_SEQ = 37, /// 开始巡航 PTZTYPE_STOP_SEQ = 38, /// 停止巡航 PTZTYPE_GOTO_PRESET = 39, /// 快球转到预置点 PTZTYPE_DEL_SEQ = 43, /// 删除巡航路径 PTZTYPE_STOP_CRUISE = 44, /// 停止轨迹 PTZTYPE_DELETE_CRUISE = 45, /// 删除单条轨迹 PTZTYPE_DELETE_ALL_CRUISE= 46, /// 删除所有轨迹 PTZTYPE_PAN_CIRCLE = 50, /// 云台以SS的速度自动圆周扫描 PTZTYPE_DRAG_PTZ = 51, /// 拖动PTZ PTZTYPE_LINEAR_SCAN = 52, /// 区域扫描 PTZTYPE_CLE_ALL_PRESET = 53, /// 预置点全部清除 PTZTYPE_CLE_ALL_SEQ = 54, /// 巡航全部清除 PTZTYPE_CLE_ALL_CRUISE = 55, /// 轨迹全部清除 PTZTYPE_POPUP_MENU = 56, /// 显示操作菜单 PTZTYPE_TILT_DOWN_ZOOM_IN = 58, /// 云台以SS的速度下俯&&焦距以速度SS变大(倍率变大) PTZTYPE_TILT_DOWN_ZOOM_OUT = 59, /// 云台以SS的速度下俯&&焦距以速度SS变小(倍率变小) PTZTYPE_PAN_LEFT_ZOOM_IN = 60, /// 云台以SS的速度左转&&焦距以速度SS变大(倍率变大) PTZTYPE_PAN_LEFT_ZOOM_OUT = 61, /// 云台以SS的速度左转&&焦距以速度SS变小(倍率变小) PTZTYPE_PAN_RIGHT_ZOOM_IN = 62, /// 云台以SS的速度右转&&焦距以速度SS变大(倍率变大) PTZTYPE_PAN_RIGHT_ZOOM_OUT = 63, /// 云台以SS的速度右转&&焦距以速度SS变小(倍率变小) PTZTYPE_UP_LEFT_ZOOM_IN = 64, /// 云台以SS的速度上仰和左转&&焦距以速度SS变大(倍率变大) PTZTYPE_UP_LEFT_ZOOM_OUT = 65, /// 云台以SS的速度上仰和左转&&焦距以速度SS变小(倍率变小) PTZTYPE_UP_RIGHT_ZOOM_IN = 66, /// 云台以SS的速度上仰和右转&&焦距以速度SS变大(倍率变大) PTZTYPE_UP_RIGHT_ZOOM_OUT = 67, /// 云台以SS的速度上仰和右转&&焦距以速度SS变小(倍率变小) PTZTYPE_DOWN_LEFT_ZOOM_IN = 68, /// 云台以SS的速度下俯和左转&&焦距以速度SS变大(倍率变大) PTZTYPE_DOWN_LEFT_ZOOM_OUT = 69, /// 云台以SS的速度下俯和左转&&焦距以速度SS变小(倍率变小) PTZTYPE_DOWN_RIGHT_ZOOM_IN = 70, /// 云台以SS的速度下俯和右转&&焦距以速度SS变大(倍率变大) PTZTYPE_DOWN_RIGHT_ZOOM_OUT = 71, /// 云台以SS的速度下俯和右转&&焦距以速度SS变小(倍率变小) PTZTYPE_TILT_UP_ZOOM_IN = 72, /// 云台以SS的速度上仰&&焦距以速度SS变大(倍率变大) PTZTYPE_TILT_UP_ZOOM_OUT = 73, /// 云台以SS的速度上仰&&焦距以速度SS变小(倍率变小) Speed是否指定速度 用户按不同解码器的速度控制值设置。取值范围[1,7] 不需要速度控制时不设置此值 Stop是否停止 0-开始,1-停止 请求:{"req":"Player_PTZControl","rid":74,"para":[{"ID":1,"Type":1,"Speed":5,"Stop":0}]} 分别返回:{"ret":0,"rid":74,"ID":1,"data":{"Ret":0}} 35) 取指定ID窗口连接信息,0私有协议播放有效 Type为获取类型 1预览 2回放 3 对讲 不支持对讲的设备调用返回空 请求:{"req":"Player_GetLinkAddr","rid":75,"para":[{"ID":1,"Type":1}]} 分别返回:{"ret":0,"rid":75,"ID":1,"data":{"Ret":0,"LinkInfo":{}}} 36) 取指定ID窗口可用对讲通道,0私有协议播放有效,不支持对讲的设备调用返回值无效 请求:{"req":"Player_GetTalkChannel","rid":76,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":76,"ID":1,"data":{"Ret":0,"TalkStatus":""}} 和 {"ret":0,"rid":76,"ID":2,"data":{"Ret":0,"TalkStatus":""}} 37) 刷新指定ID窗口对讲状态,本地MP4文件播放无效,不支持对讲的设备调用返回值无效 请求:{"req":"Player_UpdateTalkStatus","rid":77,"para":[{"ID":1,"Channel":0}]} 分别返回:{"ret":0,"rid":77,"ID":1,"data":{"Ret":0,"TalkStatus":""}} 38) 开始指定ID窗口对讲 0私有协议播放有效 Channel 为对讲通道,同时只能开一个对讲 TalkVolume 对讲音量 LocalFile和DeviceFile分别为本地和设备对讲内容保存文件路径 请求:{"req":"Player_StartTalk","rid":78,"para":[{"ID":1,"Channel":0,"TalkVolume":60,"LocalFile":"d:/Zorro/Local.mp4","DeviceFile":"d:/Zorro/Device.mp4"}]} 分别返回:{"ret":0,"rid":78,"ID":1,"data":{"Ret":0,"TID":1}} 39) 取指定ID窗口当前对讲音量 0-100,0代表静音,100最大音量 0私有协议播放有效 请求:{"req":"Player_GetTalkVolume","rid":79,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":79,"ID":1,"data":{"Ret":0,"TalkVolume":100}} 和 {"ret":0,"rid":79,"76":2,"data":{"Ret":0,"TalkVolume":0}} 40) 设置指定ID窗口当前对讲音量 0-100,0代表静音,100最大音量 0私有协议播放有效 请求:{"req":"Player_SetTalkVolume","rid":80,"para":[{"ID":1,"TalkVolume":50},{"ID":2,"TalkVolume":50}]} 分别返回:{"ret":0,"rid":80,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":80,"ID":2,"data":{"Ret":0}} 41) 指定ID窗口对讲请求停止 0私有协议播放有效 请求:{"req":"Player_StopTalk","rid":81,"para":[{"ID":1}]} 分别返回:{"ret":0,"rid":81,"ID":1,"data":{"Ret":0}} 42) 指定ID窗口截图 Type 指定图像类型,可指定1(BMP,不支持BASE64编码内容)、默认3(JPG)、4(PNG) Base64指定为1时代表直接返回BASE64编码的图像内容 AutoDel设置1 Base64为1时生效,自动删临时生成的图片文件,不删除设置0 Count截取图数量,默认截一张,Delay指定延迟毫秒数开始,Interval多张时间隔毫秒数 FileName 指定截图文件名称,中文等需要先进行UrlEncode编码,可缺省使用默认值 CustomPath 指定截图保存路径,中文等需要先进行UrlEncode编码,不指定时由PathType决定 PathType 指定截图图片保存路径类型,0默认临时目录,1操作系统桌面 2当前登录用户我的图片目录 3中间件数据目录 Quality 截取质量 0代表原图,VLC的取值0-5,海康的取值0-2,数值越大,质量越低 请求1:{"req":"Player_SnapshotImg","rid":82,"para":[{"ID":1,"Type":3,"PathType":3,"Count":3,"Base64":1,"AutoDel":1,"Delay":1000,"Interval":200}]} 请求2: {"req":"Player_SnapshotImg","rid":82,"para":[{"ID":1,"Type":3,"Count":3,"CustomPath":"D:/Zorro","FileName":"TestFileName"}]} 分别返回:{"ret":0,"rid":82,"data":{"Ret":0,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} 和 {"ret":0,"rid":82,"ID":2,"data":{"Ret":0,,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} 43) 指定ID窗口录像到文件 File为录像目标文件不指定时自动生成 如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 Second为录制限时时间(秒),0代表由前端指定停止 {"req":"Player_RecordFile","rid":83,"para":[{"ID":1,"File":"D:/Zorro/Record.mp4","Second":30}]} 返回:{"ret":0,"rid":83,"ID":1,"data":{"Ret":0,"PID":1}} 44) 指定ID窗口停止录像 {"req":"Player_StopRecord","rid":84,"para":[{"ID":1}]} File为录像文件路径,Size为录像文件大小 返回:{"ret":0,"rid":84,"ID":1,"data":{"Ret":0,"PID":1,"File":"D:/Zorro/Record.mp4","Size":321}} 45) 动态改变分屏数量或播放内容,0私有协议播放需要指定Server参数 ShowType指定分屏数量,如果不变就不设置 ForceDestroy VLC4.0时默认1,其它时候默认0,指定0时切换播放不销毁原有控件 Play指定播放内容:Uri中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递 Uri如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 请求范例1:{"req":"Player_ChangePlay","rid":85,"para":{"ShowType":2}} 请求范例2:{"req":"Player_ChangePlay","rid":85,"para":{"Play":[{"ID":1,"Server":"admin:test123456@192.168.1.9:8000","Option":"Stream=1 Link=0 caching=3"},{"ID":2,"Uri":"D:/Zorro/test.mp4"}]}} 请求范例3:{"req":"Player_ChangePlay","rid":85,"para":{"ShowType":3,"ForceDestroy":0,"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Option":"caching=3"},{"ID":2,"Uri":"D:/Zorro/test.mp4","Option":""},{"ID":3,"Server":"admin:test123456@192.168.1.9:8000","Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Option":"Stream=1"}]}} 分别返回:{"ret":0,"rid":85,"data":{"Ret":0,"Play":[]}} 46) 设置当前焦点播放窗口 ID是当前播放窗口序号,ID是从1开始,需要确保不越界 {"req":"Player_SetSelect","rid":86,"para":{"ID":2}} 返回:{"ret":0,"rid":86,"ID":2,"data":{"Ret":1}} 47) 获取当前焦点播放窗口序号 {"req":"Player_GetSelect","rid":87,"para":{}} 返回:{"ret":0,"rid":87,"ID":2,"data":{"Ret":1}} ID为当前播放焦点窗口 48) 指定ID窗口回放指定文件,必须先登录 Uri为服务器上的文件名称 Reverse为1代表倒放 {"req":"Player_PlayBackByName","rid":88,"para":[{"ID":1,"Reverse":0,"Uri":"test.mp4"},{"ID":2,"Reverse":1,"Uri":"hello.mp4"}]} 返回:{"ret":0,"rid":88,"ID":1,"data":{"Ret":0,"PlayID":1}} 和 {"ret":0,"rid":88,"ID":2,"data":{"Ret":0,"PlayID":2}} PlayID为当前播放ID 49) 指定ID窗口回放指定文件,必须先登录 0私有协议播放有效 Channel指定通道号 Begin和End为指定回放起始和结束时间,时间为UNIX时间戳,从1970年1月1号零点零分零秒开始 Reverse为1代表倒放 {"req":"Player_PlayBackByTime","rid":88,"para":[{"ID":1,"Channel":0,"Begin":1601917153,"End":1601917753,"Reverse":0},{"ID":2,"Channel":1,"Begin":1601917153,"End":1601917653,"Reverse":1}]} 返回:{"ret":0,"rid":49,"ID":1,"data":{"Ret":0,"PlayID":1}} 和 {"ret":0,"rid":49,"ID":2,"data":{"Ret":0,"PlayID":2}} PlayID为当前播放ID 50) 指定ID窗口回放控制 0私有协议播放有效 必须先调用了回放Player_PlayBackByName或Player_PlayBackByTime接口 Type控制类型:1开始播放 2停止播放 3暂停播放 4恢复播放(在暂停后调用将恢复暂停前的速度播放) 5快放 6慢放 7正常速度播放 8单帧放(恢复正常回放使用NET_DVR_PLAYNORMAL命令) 9打开声音 10关闭声音 11调节音量,取值范围[0,0xffff] 12改变文件回放的进度 13获取文件回放的进度 14获取当前已经播放的时间(按文件回放的时候有效) 15获取当前已经播放的帧数(按文件回放的时候有效) 16获取当前播放文件总的帧数(按文件回放的时候有效) 17获取当前播放文件总的时间(按文件回放的时候有效) 20丢B帧 Val控制值,11调节音量 12改变回放进度等需要设置 {"req":"Player_PlayBackControl","rid":90,"para":[{"ID":1,"Type":12,"Val":1},{"ID":2,"Type":12}]} 返回:{"ret":0,"rid":90,"ID":1,"data":{"Ret":0,"Val":1}} 和 {"ret":0,"rid":90,"ID":2,"data":{"Ret":0,"Val":2}} Val为获取值,Code为13 14 15 16 17等时有效 51) 指定ID分屏窗口全屏,一次请求只能指定一个分屏窗口全屏 请求:{"req":"Player_Fullscreen","rid":91,"para":[{"ID":1}]} 分别返回:{"ret":0,"rid":91,"ID":1,"data":{"Ret":0}} 52) 取指定ID窗口VLC播放速率 请求:{"req":"Player_GetPlayRate","rid":92,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":92,"ID":1,"data":{"Ret":0,"Rate":1.0}} 和 {"ret":0,"rid":92,"ID":2,"data":{"Ret":0,"Rate":2.0}} 53) 设置指定ID窗口VLC播放速率 请求:{"req":"Player_PutPlayRate","rid":93,"para":[{"ID":1,"Rate":1},{"ID":2,"Rate":2}]} 分别返回:{"ret":0,"rid":93,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":93,"ID":2,"data":{"Ret":0}} 54) VLC设置指定ID窗口字幕信息,举例: 指定的参数,需要的才设置,必须视频开始播放才能设置 Text 文字内容 Opacity 透明度 0-256 0完全透明 256完全不透明 Position 显示位置有center left right top bottom top-left top-right bottom-left bottom-right 不指定时由X和Y坐标决定 X 和 Y分别指定文字开始坐标 Timeout 超时 Color 颜色 可用长整型(COLORREF),也可以用#000000这样的颜色值 Size 字体大小 请求:{"req":"Player_MarqueePut","rid":94,"para":[{"ID":1,"Text":"Hello","Position":"TOP","Timeout":0,"Color":"16777215","Opacity":128,"Refresh":1,"Size":50,"X":50,"Y":50},{"ID":2,"Opacity":256}]} 分别返回:{"ret":0,"rid":94,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":94,"ID":2,"data":{"Ret":0}} 55) VLC取指定ID窗口字幕信息,举例: Text指定时获取文字信息 Position指定时获取位置信息 请求:{"req":"Player_MarqueeGet","rid":95,"para":[{"ID":1,"Text":1,"Position":1},{"ID":2}]} 分别返回:{"ret":0,"rid":95,"ID":1,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":"","Text":"","Position":""}} 和 {"ret":0,"rid":95,"ID":2,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":""}} 56) VLC控制指定ID窗口字幕,举例: 请求:{"req":"Player_MarqueeControl","rid":96,"para":[{"ID":1,"Enable":1},{"ID":2,"Enable":0}]} 分别返回:{"ret":0,"rid":96,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":96,"ID":2,"data":{"Ret":0}} 57) VLC设置水印显示 ID为窗口序号 File 水印文件路径,如有特殊符号请先进行UrlEncode,为空默认用小程序目录的Logo.png Code 水印图片BASE64编码,可替代File Position 显示位置有center left right top bottom top-left top-right bottom-left bottom-right,默认undefined未定义,显示位置有坐标X和Y控制 Delay 水印间隔图像时间为毫秒 0 - 60000 默认1000 Repeat 循环 水印动画的循环数量 -1继续(默认) 0关闭 Opacity 透明度 (数值介于 0(完全透明) 与 255(完全不透明,默认) X 水印X坐标 Y 水印Y坐标 {"req":"Player_PutLogoShow","rid":97,"para":[{"ID":1,"File":"VLC.png" ,"Delay":20,"Repeat":-1,"Opacity":128,"X":100,"Y":100},{"ID":2,"Position":" center ","Delay":100,"Repeat":-1,"Opacity":256,"X":200,"Y":0}]} 分别返回:{"ret":0,"rid":97,"ID":1,"data":{"Ret":0,"Enable":1}} 和 {"ret":0,"rid":97,"ID":2,"data":{"Ret":0,"Enable":0}} 58) 获取水印显示信息 {"req":"Player_GetShowLogo","rid":98,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":98,"ID":1,"data":{"Ret":0,"File":"","Position":"","Delay":0,"Repeat":0,"Opacity":0,"X":0,"Y":0,"Enable":0}} 和 {"ret":0,"rid":98,"ID":2,"data":{"Ret":0}} 59) VLC水印显示控制 ID为窗口序号 Flag为1代表启用,0代表禁用 {"req":"Player_LogoControl","rid":99,"para":[{"ID":1,"Flag":1},{"ID":2,"Flag":0}]} 分别返回:{"ret":0,"rid":99,"ID":1,"data":{"Ret":0,"Enable":1}} 和 {"ret":0,"rid":99,"ID":2,"data":{"Ret":0,"Enable":0}} 60) 取指定ID窗口是否显示工具栏 请求:{"req":"Player_GetToolbar","rid":100,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":100,"ID":1,"data":{"Ret":0,"Toolbar":1}} 和 {"ret":0,"rid":100,"ID":2,"data":{"Ret":0,"Toolbar":0}} 61) 设置指定ID窗口是否显示工具栏 请求:{"req":"Player_PutToolbar","rid":101,"para":[{"ID":1,"Toolbar":1},{"ID":2,"Toolbar":0}]} 分别返回:{"ret":0,"rid":101,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":101,"ID":2,"data":{"Ret":0}} 62) 取指定ID窗口是否静音 请求:{"req":"Player_GetSoundStatus","rid":102,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":102,"ID":1,"data":{"Ret":0,"Mute":1}} 和 {"ret":0,"rid":102,"ID":2,"data":{"Ret":0,"Mute":0}} 63) 设置指定ID窗口是否静音 请求:{"req":"Player_PutSoundStatus","rid":103,"para":[{"ID":1,"Mute":1},{"ID":2,"Mute":0}]} 分别返回:{"ret":0,"rid":103,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":103,"ID":2,"data":{"Ret":0}} 64) 取指定ID窗口声音通道,VLC播放引擎有效 请求:{"req":"Player_GetAudioChannel","rid":104,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":104,"ID":1,"data":{"Ret":0,"Channel":1}} 和 {"ret":0,"rid":104,"ID":2,"data":{"Ret":0,"Channel":2}} 65) 设置指定ID窗口声音通道,VLC播放引擎有效 声道定义: libvlc_AudioChannel_Error = -1, libvlc_AudioChannel_Stereo = 1, libvlc_AudioChannel_RStereo = 2, libvlc_AudioChannel_Left = 3, libvlc_AudioChannel_Right = 4, libvlc_AudioChannel_Dolbys = 5 请求:{"req":"Player_PutAudioChannel","rid":105,"para":[{"ID":1,"Channel":1},{"ID":2,"Channel":2}]} 分别返回:{"ret":0,"rid":105,"ID":1,"data":{"Ret":0,"Volume":50}} 和 {"ret":0,"rid":105,"ID":2,"data":{"Ret":0,"Volume":100}} 其中Volume为当前音量 66) 取指定ID窗口音轨数量,VLC播放引擎有效,举例: 请求:{"req":"Player_GetAudioTrackCount","rid":106,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":106,"ID":1,"data":{"Ret":0,"Count":0}} 和 {"ret":0,"rid":106,"ID":2,"data":{"Ret":0,"Count":0}} 67) 取指定ID窗口音轨,VLC播放引擎有效 请求:{"req":"Player_GetAudioTrack","rid":107,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":107,"ID":1,"data":{"Ret":0,"Track":1}} 和 {"ret":0,"rid":107,"ID":2,"data":{"Ret":0,"Track":1}} 68) 设置指定ID窗口音轨,VLC播放引擎有效 请求:{"req":"Player_PutAudioTrack","rid":108,"para":[{"ID":1,"Track":1},{"ID":2,"Track":1}]} 分别返回:{"ret":0,"rid":108,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":108,"ID":2,"data":{"Ret":0}} 69) 取指定ID窗口推送信息屏蔽掩码,举例: 请求:{"req":"Player_GetBlockFlag","rid":109,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":109,"ID":1,"data":{"Ret":0,"BlockFlag":0}} 和 {"ret":0,"rid":109,"ID":2,"data":{"Ret":0,"BlockFlag":0}} 70) 设置指定ID窗口推送信息屏蔽掩码,举例: 由于以下几种信息通知比较多,所以增加阻止通知设置,比如阻止鼠标移动和进度通知,就设置9 1阻止鼠标移动通知 2阻止时间变化通知 4阻止缓存通知 8阻止进度百分比通知 请求:{"req":"Player_PutBlockFlag","rid":110,"para":[{"ID":1,"BlockFlag":0},{"ID":2,"BlockFlag":0}]} 分别返回:{"ret":0,"rid":110,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":110,"ID":2,"data":{"Ret":0}} 71) 设置指定ID窗口前进或后退帧数 正数前进,负数后退,最大可后退帧看FrameCache缓存数 播放时指定了帧缓存参数FrameCache大于0时代表了启动按帧播放 请求:{"req":"Player_MoveFrame","rid":111,"para":[{"ID":1,"FrameCount":-10},{"ID":2,"FrameCount":5}]} 分别返回:{"ret":0,"rid":111,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":111,"ID":2,"data":{"Ret":0}} 72) 请求显示下一帧 执行后播放暂停,效果类似在VLC桌面程序中按快捷键E的效果 FrameCount 为帧数量,不指定时默认为1 不支持回退操作,仅支持视频文件和回放流 {"req":"Player_NextFrame","rid":112,"para":[{"ID":1,"FrameCount":10},{"ID":2,"FrameCount":10}]} 分别返回:{"ret":0,"rid":112,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":112,"ID":2,"data":{"Ret":0}} 73) 取视频每秒传输帧数,举例: 请求:{"req":"Player_GetFPS","rid":113,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":113,"ID":1,"data":{"Ret":0,"FPS":30}} 和 {"ret":0,"rid":113,"ID":2,"data":{"Ret":0,"FPS":30}} 5、多引擎网页视频播放器接收的通知: 这些通知必须通过WebSocket连接到此小程序侦听的端口才能接收到。 A、小程序: 1) Selected 选中分屏窗口序号通知 ID是分屏序号 aid是播放实例ID 下同 {"event":"Player_Selected","ID":1,"aid":1,"data":{}} 2) FullScreen 分屏窗口切换全屏通知 {"event":"Player_FullScreen","ID":1,"aid":1,"data":{}} 3) 录像结束通知(限时录制时发出) ID 为窗口序号 PID为录像ID Size录像文件大小 File录像实际全路径 {"event":"Player_StopRecord","ID":1,"aid":1,"data":{"Ret":0,"PID":1,"File":"D:/Zorro/test.mp4","Size":321}} 4) 登录状态通知,播放MP4等本地文件无效 {"event":"Player_LoginStatus","ID":1,"aid":1,"data":{"LID":1,"Status":0,"Desc":"登录失败"}} 5) 异常通知 Type 0x8001语音对讲异常 0x8003网络预览异常 0x8005预览时重新连接 0x8010回放异常 0x8015预览时重连成功 {"event":"Player_Exception","ID":1,"aid":1,"data":{"Type":1}} 6) 海康SDK错误通知 SDK支持库还未安装 {"event":"Player_SDKErr","ID":1,"aid":1,"data":{}} 7) 播放事件通知 Type事件类型 Val事件相关的值 Type包含的值含义如下 5(libvlc_MediaStateChanged) 视频状态变化 1打开 2缓冲数据 3正在播放 4播放暂停 5停止播放 6播放到尾部 7播放错误 258(libvlc_MediaPlayerOpening) 播放内容打开中... 259(libvlc_MediaPlayerBuffering) 缓冲数据中... Val中包含缓冲数据的长度 260(libvlc_MediaPlayerPlaying) 播放中 261(libvlc_MediaPlayerPaused) 播放暂停 262(libvlc_MediaPlayerStopped) 播放停止 263(libvlc_MediaPlayerForward) 播放快进 264(libvlc_MediaPlayerBackward) 播放快退 266(libvlc_MediaPlayerEncounteredError) 播放遇到错误 267(libvlc_MediaPlayerTimeChanged) 播放时间变化 Val对应最新的时间 268(libvlc_MediaPlayerPositionChanged) 播放位置变化 Val对应最新的位置,这个用来做播放进度展示,*100就是百分比 273(libvlc_MediaPlayerLengthChanged) 播放长度变化 Val对应最新的长度 283(libvlc_MediaPlayerAudioVolume) 播放音量通知 Val对应最新的音量 {"event":"Player_VlcEvent","ID":1,"aid":1,"data":{"Type":1,"Val":0}} 8) 是否静音通知 Mute为1是静音 0非静音 Volume音量0-100 {"event":"Player_SoundStatus","ID":1,"aid":1,"data":{"Mute":1,"Volume":80}} 9) 帧播放通知 CacheCount当前缓存帧数 CurDraw当前绘制帧在缓存中的序号 {"event":"Player_FramePlaying","ID":1,"aid":1,"data":{"CacheCount":30,"CurDraw":0}} 10) 音频信息通知 Format格式 Rate速率 Channel通道数量 {"event":"Player_AudioInfo","ID":1,"aid":1,"data":{"Format":"S16N","Rate":8000,"Channel":2}} 11) 音柱通知 Left左声道声音大小 Right右声道声音大小 {"event":"Player_AudioWave","ID":1,"aid":1,"data":{"Left":30,"Right":20}} B、PluginOK支持的事件通知: 1) 小程序是否响应了热键全屏 {"event":"Player_FullScreen","aid":1,"data":{"FullScreen":0}} FullScreen为当前是否全屏标记 2) Wrl_AppletExit 小程序退出通知 {"event":"Wrl_AppletExit","data":{"ID":1}} ID小程序实例ID 6、其它 请求参数的JSON数据包,请确保是UTF-8无签名的编码。 更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.pdf”及“PluginOK中间件安全解决方案.pdf”。 如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938