RTSP网页多引擎播放器(支持多路):基于跨浏览器的原生小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )网络高级版开发,底层可调用海康及大华的设备网络SDK(海康SDK下载:https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10 大华SDK下载:https://support.dahuatech.com/tools/sdkExploit )和开源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建议用3.0.3或2.2.8版,XP以上系统建议使用3.0.18版本,VLC、海康及大华SDK等播放引擎版权归相关公司所。 本小程序具有如下优点: 1)、全市场可实现较低延迟(200毫秒左右)的首选播放方案,主流版本的浏览器都支持; 2)、支持多路同时实时播放、回放、支持按帧回退、支持下一帧、支持抓图、录屏、高清视频或大屏播放性能好; 3)、底层播放技术采用海康及大华设备网络SDK(版权归原厂家),支持海康及大华私有协议及RTSP流播放、云台控制、语音对讲等,支持H.264和H.265; 4)、播放小程序额外付费后可获得源代码进行定制开发; 5)、支持海康及大华的摄像头和海康硬盘录像机等各系列的设备; 6)、支持本地MP4等视频文件和RTSP、RTMP、MMS等网络流播放。 适用于海康威视DVR、NVR、DVS、网络摄像机、网络球机等设备,不仅限于以下海康产品型号: 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 系列等 适用于大华通用设备:IPC、球机、对讲等 文件播放支持私有、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、RTSP网页多引擎播放器控制相关接口: 说明:以下功能请通过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)、请求启动RTSP网页多引擎播放器: Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(1代表IE 2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 20代表Electron 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) Title:网页标题中的关键词 Url:加载小程序所在的网页实际地址,在网页中指定小程序的显示位置和大小,分屏多窗口播放地址和选项等,不建议使用了,建议改用Web参数 Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 64启用Web参数 128防截屏 256强制显示到副屏 512允许同一网页加载多实例 Web:播放配置(新增方式),可代替Url使用,Flag值+64使用此配置,此命令中必须指定Left、Top、Width、Height的值 Version播放小程序版本,0在播放小程序中播放,1在独立进程中播放 ShowType 播放窗口分屏类型,默认1只显示一个播放窗口,支持1到31的数值,多达31种分屏,注意此值不代表分屏个数 IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 BarW和BarH分别是网页右侧和底部预留区域,ScrollTop为顶部滚动预留高度 小程序实际显示首先会基于Web或Url网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 Option:播放参数,多个参数中间用空格区分 PlayEngine=2 指定用LibVLC引擎播放 默认0是采用海康SDK私有协议播放 1是采用海康MP4本地文件引擎播放 3是采用FFPlayer引擎播放 4是采用大华SDK私有协议播放 AutoLoop=1 指定是否循环播放,1循环 Caching=6 海康私有协议播放引擎比如设置6代表最大缓存6帧,其它播放引擎设置6代表600毫秒延迟 Server 指定海康或大华SDK私有协议播放服务器地址、登录用户名、密码及端口信息 Channel=1 私有协议播放时的通道ID,直接连摄像头播放时无需指定,默认通道序号是1 硬盘录像机可指定大于32的通道数值 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是显示 Open :启动后第一个窗口自动播放的流地址或本地多媒体文件路径,斜杠\替换成/再传,也可以在Web中指定 注意:Open、Url、Web中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递 如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 举例: 自动识别当前浏览器指定位置和大小启动: {"req":"Wrl_HKWebPlayer","rid":5,"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":6,"Web":[{"ID":1,"Server":"wzh:test123456@192.168.1.12:8000","Option":"Channel=33 Caching=1 Stream=1 Link=1"},{"ID":2,"Server":"wzh:test123456@192.168.1.2:37777","Option":"Channel=1 Link=1 Stream=0 PlayEngine=4"},{"ID":3,"Server":"admin:test123456@192.168.1.8:8000","Option":"Link=1 Stream=0"},{"ID":4,"Server":"wzh:test123456@192.168.1.8:8000","Option":"Link=0 Stream=1"},{"ID":5,"Uri":"d:/zorro/test.mp4","Option":"PlayEngine=1"},{"ID":6,"Uri":"https://vjs.zencdn.net/v/oceans.mp4","Option":"PlayEngine=2"}]}} 自动识别当前浏览器充满网页区显示: {"req":"Wrl_HKWebPlayer","rid":5,"para":{"Type":"0","Title":"HK Web Player","Flag":72,"Left":20,"Top":230,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Version":"0","ShowType":6,"Web":[{"ID":1,"Server":"wzh:test123456@192.168.1.12:8000","Option":"Channel=33 Caching=1 Stream=1 Link=1"},{"ID":2,"Server":"wzh:test123456@192.168.1.2:37777","Option":"Channel=1 Link=1 Stream=0 PlayEngine=4"},{"ID":3,"Server":"admin:test123456@192.168.1.8:8000","Option":"Link=1 Stream=0"},{"ID":4,"Server":"wzh:test123456@192.168.1.8:8000","Option":"Link=0 Stream=1"},{"ID":5,"Uri":"d:/zorro/test.mp4","Option":"PlayEngine=1"},{"ID":6,"Uri":"https://vjs.zencdn.net/v/oceans.mp4","Option":"PlayEngine=2"}]}} 启动后会先后收到三个JSON数据包 A、{"ret":0,"rid":5,"data":{"ID":2}} 代表小程序WS侦听服务就绪 B、{"event":"Wrl_Listen","rid":2,"rid":5,"data":{"SID":"123","PID":"HKWebPlayer","port":920}} 返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新播放一个Player。 代表小程序创建成功,返回ID为当前小程序运行实例ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 C、{"event":"Wrl_AppletOK","rid":2,"rid":5,"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)、请求控制RTSP网页多引擎播放器: 当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等 ID为启动小程序时返回的ID值,Code代表控制类型掩码:1正常关闭 128强制迅速关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,设置4和32隐藏后可通过8恢复显示 {"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} 3)、请求滚动网页中RTSP网页多引擎播放器: 当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动 ID为启动小程序时返回JSON中的ID值 Code为滚动方向1是水平,2是垂直,3是同时 Left为横向滚动条位置,Top为纵向滚动条位置 {"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} 4)、请求改变网页中RTSP网页多引擎播放器显示位置或大小: 当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小 ID为Wrl_HKWebPlayer启动小程序时返回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_HKWebPlayer启动小程序时返回的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)、请求安装RTSP网页多引擎播放器 请在测试网页输入框中,输入如下请求,然后点击发送,完成安装: {"req":"Plugin_Install","rid":1,"para":{"Name":"海康网页播放器","PID":"HKWebPlayer","Date":"2023-11-19","Desc":"PluginOK之上跨浏览器的海康网页播放小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中低延迟多路播放RTSP流","DownAddr":"http://local.zorrosoft.com/Files/Net/HKWebPlayer.pid","MD5":"BDE14B22CEEE01FB8831BF1F45A2E30C","Version":"2.2.12.1","Size":6094848,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"3D07F6A8A38879857BF27E0C6428E98F0FE8A3ECDF25978E8E09A7BEB72C84161F9ACFAFCFC5E264CAC95024954BA6E156C0615FE37C099CE111ECC753D477CB66E5BFBC5571340892A46A57C0ADC201C5D6973E9B80C8BF04E2C1E50C5D9A4E71D0EEA9AF5F00E867E4A834F650F1105F63712B4F302758F346D1AC710A1BA0B187174D10C60A7A8C504132CE7AD6B981FACF82556C1D7759571A7358C21AA7995091ED052D32E8FFED6B927699DBF60402307BB70B536D3F5E98EF9E05C9EC694AF164D315E659BF974904D8B5751E021AAF3EA6ABF15013708B9C9313C101F0BC1AB8CF188B618213B2864912C351F478C1C1E339D0CE3155B37FD87A6A4F"}} 启动安装后,会不断收到安装进度直到安装结束。 2)、请求升级RTSP网页多引擎播放器: {"req":"Plugin_Update","rid":1,"para":{"Name":"海康网页播放器","PID":"HKWebPlayer","Date":"2023-11-19","Desc":"PluginOK之上跨浏览器的海康网页播放小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中低延迟多路播放RTSP流","DownAddr":"http://local.zorrosoft.com/Files/Net/HKWebPlayer_Update.pid","MD5":"75815A06F89A0EA54CEE3FE52885ED0C","Version":"2.2.12.1","Size":6094848,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"90E9767FA401EA2E9626CE179016DF720CEA9AA4AA373940E6F402345731D193609474C564F8774146ED243DF8836EDC2C0EE853064CFED21AE2D47D6F316572E1E52E8A562C3827185E052728F53DB9BF41A8E67BD00D92A60B6448152A0827F5EAED563AA202E7A6248E1506459CC12119322D83E5AAD0999DC3BCEA5094881A66F6E0B7CAC6733FCF403A8DD8FFA0F54E1EC8118848ABF133D83AC48B98C3A266528A38F7058B33A54A76F7B317BD492BF0B0F5A702F9015ED8D729866D76014BE1F7A14D4D255908968004209A84A0F090B99B643706CD4867EEDF815C59DA011E6C70492C1F032806FB8D513630CD641DEF6121CBEC383B8804D23A09A9"}} 以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 3)、请求卸载RTSP网页多引擎播放器: 正式版需要添加TK校验,具体规则请参考SDK包中文档“PluginOK中间件安全解决方案.pdf”,可在SDK包中的打包程序ZbaPackage.exe的中间件维护生成带TK的请求。 {"req":"Plugin_Remove","rid":3,"para":{"PID":"HKWebPlayer","Type":8}} 4、RTSP网页多引擎播放器转调用多引擎原生播放SDK封装的ActiveX控件接口,先根据Wrl_HKWebPlayer请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令: A、常用功能请求: 1) 取指定ID播放窗口属性AutoLoop(自动循环播放)值,仅对MP4等文件播放有效 其中窗口序号ID,从1开始,序号原则是从左向右开始编号,然后从上到下开始顺序编号,如遇右侧多层排列窗口时,直到右侧窗口序号排序完成 请求:{"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开源LibVLC播放 3FFPlayer引擎播放 4大华SDK私有协议播放 使用哪个引擎由启动播放参数决定 请求:{"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窗口音频输出类型 VLC播放有效 请求:{"req":"Player_GetAudioOut","rid":45,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":45,"ID":1,"data":{"Ret":0,"AudioOut":"directsound"}} 和 {"ret":0,"rid":45,"ID":2,"data":{"Ret":0,"AudioOut":"any"}} 6) 设置指定ID窗口音频输出类型,调用播放前设置 VLC播放有效 请求:{"req":"Player_PutAudioOut","rid":46,"para":[{"ID":1,"AudioOut":"directsound"},{"ID":2,"AudioOut":"any"}]} 分别返回:{"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,"aid":15,"data":{"Ret":0,"DeviceInfo":{"DevType":31,"IP":0,"DevChanNum":1,"IPChanNum":0,"AudioNum":1,"MainProto":2,"SubProto":2,"SN":"DS-2SC3Q140MY-TE20210819AACHG56068012"}}} 和 {"ret":0,"rid":55,"ID":2,"aid":13,"data":{"Ret":0,"DeviceInfo":{"DevType":20,"DiskNum":1,"DevChanNum":1,"SN":"9D0B7E0PHA14CA4"}}} 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窗口播放文件时长 请求:{"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窗口文件已播放时长 请求:{"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窗口文件已播放帧数,仅对海康及大华回放、FFPlayer和本地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窗口文件总播放帧数,仅对海康及大华回放、FFPlayer和本地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窗口文件播放百分比,仅对VLC引擎、FFPlayer及本地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窗口文件播放百分比,仅对VLC引擎、FFPlayer及本地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窗口播放控制,非实时流打开播放后有效 Type类型 默认1加速播放可多次调用 2降速播放可多次调用 3倒播(仅海康MP4本地文件播放支持) 请求:{"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,"aid":15,"data":{"Ret":0,"Type":31,"SerialNumber":"DS-2SC3Q140MY-TE20210819AACHG56068012"}} 和 {"ret":0,"rid":64,"ID":2,"aid":14,"data":{"Ret":0,"Type":20,"SerialNumber":"9D0B7E0PHA14CA4"}} 25) 获取或者设置指定ID窗口当前播放通道,本地MP4等文件播放无效 获取请求:{"req":"Player_GetCurChannel","rid":65,"para":[{"ID":1},{"ID":2}]} 设置当前播放通道请求,只对硬盘录像机有效:{"req":"Player_PutCurChannel","rid":65,"para":[{"ID":1,"Channel":33},{"ID":2,"Channel":34}]} 分别返回:{"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文件、FFPlayer及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流地址,海康及大华私有协议播放需要先登录 指定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窗口进行云台控制,海康需要先调用播放,大华只需要登录即可,海康及大华私有协议有效 Stop是否停止 0-开始,1-停止 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] 不需要速度控制时不设置此值 以下是大华云台类型定义: DHPTZTYPE_UP_CONTROL = 0, // 上 速度对应parma2(1-8) DHPTZTYPE_DOWN_CONTROL, // 下 速度对应parma2(1-8) DHPTZTYPE_LEFT_CONTROL, // 左 速度对应parma2(1-8) DHPTZTYPE_RIGHT_CONTROL, // 右 速度对应parma2(1-8) DHPTZTYPE_ZOOM_ADD_CONTROL, // 变倍+ 对应param2 DHPTZTYPE_ZOOM_DEC_CONTROL, // 变倍- 对应param2 DHPTZTYPE_FOCUS_ADD_CONTROL, // 调焦- 对应param2 DHPTZTYPE_FOCUS_DEC_CONTROL, // 调焦+ 对应param2 DHPTZTYPE_APERTURE_ADD_CONTROL, // 光圈+ 对应param2 DHPTZTYPE_APERTURE_DEC_CONTROL, // 光圈- 对应param2 DHPTZTYPE_POINT_MOVE_CONTROL, // 转至预置点 param2为预置点序号 DHPTZTYPE_POINT_SET_CONTROL, // 设置 param2为预置点序号,最大序号可以从云台能力集中获取 param4可以传预置点名称,预置点名称最大有效值为63字节。 DHPTZTYPE_POINT_DEL_CONTROL, // 删除 param2为预置点序号 DHPTZTYPE_POINT_LOOP_CONTROL, // 点间巡航 param1为巡航线路 DHPTZTYPE_LAMP_CONTROL, // 灯光雨刷 对应param1(1-开启,0-关闭) /// 以下是云台扩展类型 DHEXTPTZTYPE_LEFTTOP = 0x20, // 左上 DHEXTPTZTYPE_RIGHTTOP, // 右上 DHEXTPTZTYPE_LEFTDOWN, // 左下 DHEXTPTZTYPE_RIGHTDOWN, // 右下 DHEXTPTZTYPE_ADDTOLOOP, // 加入预置点到巡航 巡航线路 预置点值 DHEXTPTZTYPE_DELFROMLOOP, // 删除巡航中预置点 巡航线路 预置点值 DHEXTPTZTYPE_CLOSELOOP, // 清除巡航 巡航线路 DHEXTPTZTYPE_STARTPANCRUISE, // 开始水平旋转 DHEXTPTZTYPE_STOPPANCRUISE, // 停止水平旋转 DHEXTPTZTYPE_SETLEFTBORDER, // 设置左边界 DHEXTPTZTYPE_SETRIGHTBORDER, // 设置右边界 DHEXTPTZTYPE_STARTLINESCAN, // 开始线扫 DHEXTPTZTYPE_CLOSELINESCAN, // 停止线扫 DHEXTPTZTYPE_SETMODESTART, // 设置模式开始 模式线路 DHEXTPTZTYPE_SETMODESTOP, // 设置模式结束 模式线路 DHEXTPTZTYPE_RUNMODE, // 运行模式 模式线路 DHEXTPTZTYPE_STOPMODE, // 停止模式 模式线路 DHEXTPTZTYPE_DELETEMODE, // 清除模式 模式线路 DHEXTPTZTYPE_REVERSECOMM, // 翻转命令 DHEXTPTZTYPE_FASTGOTO, // 快速定位 水平坐标(-8191~8191) 垂直坐标(-8191~8191) 变倍(-16~16) DHEXTPTZTYPE_AUXIOPEN, // 辅助开关开 辅助点(param4对应 PTZ_CONTROL_AUXILIARY,param1、param2、param3无效,dwStop设置为FALSE) DHEXTPTZTYPE_AUXICLOSE, // 辅助开关关 辅助点(param4对应 PTZ_CONTROL_AUXILIARY,param1、param2、param3无效,dwStop设置为FALSE) DHEXTPTZTYPE_OPENMENU = 0x36, // 打开球机菜单 DHEXTPTZTYPE_CLOSEMENU, // 关闭菜单 DHEXTPTZTYPE_MENUOK, // 菜单确定 DHEXTPTZTYPE_MENUCANCEL, // 菜单取消 DHEXTPTZTYPE_MENUUP, // 菜单上 DHEXTPTZTYPE_MENUDOWN, // 菜单下 DHEXTPTZTYPE_MENULEFT, // 菜单左 DHEXTPTZTYPE_MENURIGHT, // 菜单右 DHEXTPTZTYPE_ALARMHANDLE = 0x40, // 报警联动云台 parm1:报警输入通道;parm2:报警联动类型1-预置点2-线扫3-巡航;parm3:联动值,如预置点号 DHEXTPTZTYPE_MATRIXSWITCH = 0x41, // 矩阵切换 parm1:预览器号(视频输出号);parm2:视频输入号;parm3:矩阵号 DHEXTPTZTYPE_LIGHTCONTROL, // 灯光控制器 DHEXTPTZTYPE_EXACTGOTO, // 三维精确定位 parm1:水平角度(0~3600);parm2:垂直坐标(-1800-1800);parm3:变倍(1~128),变倍为档位,并非实际变倍倍数 DHEXTPTZTYPE_RESETZERO, // 三维定位重设零位 DHEXTPTZTYPE_MOVE_ABSOLUTELY, // 绝对移动控制命令,param4对应结构 PTZ_CONTROL_ABSOLUTELY DHEXTPTZTYPE_MOVE_CONTINUOUSLY, // 持续移动控制命令,param4对应结构 PTZ_CONTROL_CONTINUOUSLY DHEXTPTZTYPE_GOTOPRESET, // 云台控制命令,以一定速度转到预置位点,parm4对应结构PTZ_CONTROL_GOTOPRESET DHEXTPTZTYPE_SET_VIEW_RANGE = 0x49, // 设置可视域(param4对应结构 PTZ_VIEW_RANGE_INFO) DHEXTPTZTYPE_FOCUS_ABSOLUTELY = 0x4A, // 绝对聚焦(param4对应结构PTZ_FOCUS_ABSOLUTELY) DHEXTPTZTYPE_HORSECTORSCAN = 0x4B, // 水平扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效) DHEXTPTZTYPE_VERSECTORSCAN = 0x4C, // 垂直扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效) DHEXTPTZTYPE_SET_ABS_ZOOMFOCUS = 0x4D, // 设定绝对焦距、聚焦值,param1为焦距,范围:[0,255],param2为聚焦,范围:[0,255],param3、param4无效 DHEXTPTZTYPE_SET_FISHEYE_EPTZ = 0x4E, // 控制鱼眼电子云台,param4对应结构 PTZ_CONTROL_SET_FISHEYE_EPTZ DHEXTPTZTYPE_SET_TRACK_START = 0x4F, // 轨道机开始控制(param4对应结构体为 PTZ_CONTROL_SET_TRACK_CONTROL,dwStop传FALSE, param1、param2、param3无效) DHEXTPTZTYPE_SET_TRACK_STOP = 0x50, // 轨道机停止控制(param4对应结构体为 PTZ_CONTROL_SET_TRACK_CONTROL,dwStop传FALSE,param1、param2、param3无效) DHEXTPTZTYPE_RESTART = 0x51, // 云台重启命令(param1、param2、param3 param4 均无效,dwStop设置为FALSE) DHEXTPTZTYPE_INTELLI_TRACKMOVE = 0x52, // 云台连续移动,枪球联动专用,param4对应结构 PTZ_CONTROL_INTELLI_TRACKMOVE DHEXTPTZTYPE_SET_FOCUS_REGION = 0x53, // 设置区域聚焦参数(param4对应结构体为PTZ_CONTROL_SET_FOCUS_REGION,dwStop传FALSE,param1、param2、param3无效) DHEXTPTZTYPE_PAUSELINESCAN = 0x54, // 暂停线扫(param1、param2、param3param4均无效,dwStop设置为FALSE) DHEXTPTZTYPE_INTELLI_SETLENSWISDOMSTATE = 0x55,// 目标跟踪时设置聚焦模式(param4对应结构体为PTZ_CONTROL_INTELLI_SETLENSWISDOMSTATE,dwStop传FALSE,param1、param2、param3无效) DHEXTPTZTYPE_INTELLI_SETFOCUSAREA = 0x56, // 设置聚焦区域(param4对应结构体为PTZ_CONTROL_INTELLI_SETFOCUSAREA,dwStop传FALSE,param1、param2、param3无效) // 注:目标跟踪若不需设置聚焦区域,因聚焦区域会沿袭上次主动设置状态,故需主动调用此接口取消设置聚焦区域 DHEXTPTZTYPE_UP_TELE = 0x70, // 上 + TELE param1=速度(1-8),下同 DHEXTPTZTYPE_DOWN_TELE, // 下 + TELE DHEXTPTZTYPE_LEFT_TELE, // 左 + TELE DHEXTPTZTYPE_RIGHT_TELE, // 右 + TELE DHEXTPTZTYPE_LEFTUP_TELE, // 左上 + TELE DHEXTPTZTYPE_LEFTDOWN_TELE, // 左下 + TELE DHEXTPTZTYPE_TIGHTUP_TELE, // 右上 + TELE DHEXTPTZTYPE_RIGHTDOWN_TELE, // 右下 + TELE DHEXTPTZTYPE_UP_WIDE, // 上 + WIDE param1=速度(1-8),下同 DHEXTPTZTYPE_DOWN_WIDE, // 下 + WIDE DHEXTPTZTYPE_LEFT_WIDE, // 左 + WIDE DHEXTPTZTYPE_RIGHT_WIDE, // 右 + WIDE DHEXTPTZTYPE_LEFTUP_WIDE, // 左上 + WIDE DHEXTPTZTYPE_LEFTDOWN_WIDE, // 左下 + WIDE DHEXTPTZTYPE_TIGHTUP_WIDE, // 右上 + WIDE DHEXTPTZTYPE_RIGHTDOWN_WIDE, // 右下 + WIDE DHEXTPTZTYPE_GOTOPRESETSNAP = 0x80, // 转至预置点并抓图 DHEXTPTZTYPE_DIRECTIONCALIBRATION = 0x82, // 校准云台方向(双方向校准) DHEXTPTZTYPE_SINGLEDIRECTIONCALIBRATION = 0x83, // 校准云台方向(单防线校准),param4对应结构 NET_IN_CALIBRATE_SINGLEDIRECTION DHEXTPTZTYPE_MOVE_RELATIVELY = 0x84, // 云台相对定位,param4对应结构 NET_IN_MOVERELATIVELY_INFO DHEXTPTZTYPE_SET_DIRECTION = 0x85, // 设置云台方向, param4对应结构 NET_IN_SET_DIRECTION_INFO DHEXTPTZTYPE_BASE_MOVE_ABSOLUTELY = 0x86, // 精准绝对移动控制命令, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_INFO(通过 CFG_CAP_CMD_PTZ 命令获取云台能力集( CFG_PTZ_PROTOCOL_CAPS_INFO ),若bSupportReal为TRUE则设备支持该操作) DHEXTPTZTYPE_BASE_MOVE_CONTINUOUSLY, // 云台连续移动控制命令, param4 对应结构 NET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO. 通过 CFG_CAP_CMD_PTZ 命令获取云台能力集 // 若 CFG_PTZ_PROTOCOL_CAPS_INFO 中 stuMoveContinuously 字段的 stuType.bSupportExtra 为 TRUE, 表示设备支持该操作 DHEXTPTZTYPE_BASE_SET_FOCUS_MAP_VALUE, // 设置当前位置聚焦值, param4对应结构体 NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO DHEXTPTZTYPE_BASE_MOVE_ABSOLUTELY_ONLYPT, // 绝对定位独立控制PT并能以度/秒为单位的速度控制, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO DHEXTPTZTYPE_BASE_MOVE_ABSOLUTELY_ONLYZOOM, // 绝对定位独立控制zoom,并能控制变倍速度, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO DHEXTPTZTYPE_STOP_MOVE, // 云台移动停止,同时也停止巡航模式,param4对应结构体 NET_IN_STOP_MOVE_INFO DHEXTPTZTYPE_TOTAL, // 最大命令值 大华云台控制参数param1 param2 param3分别对应以上类型中需要的参数 海康云台请求举例:{"req":"Player_PTZControl","rid":74,"para":[{"ID":1,"Type":25,"Speed":5,"Stop":0}]} 大华云台请求举例:{"req":"Player_PTZControl","rid":74,"para":[{"ID":1,"Type":0,"param2":5,"Stop":0}]} 分别返回:{"ret":0,"rid":74,"ID":1,"data":{"Ret":0}} 35) 取指定ID窗口连接信息,海康私有协议播放有效 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窗口可用视频或对讲通道,海康及大华私有协议播放有效 Type获取类型 0可用视频通道 1可用对讲通道 请求:{"req":"Player_GetChannelInfo","rid":76,"para":[{"ID":1,"Type":0},{"ID":2,"Type":1}]} 分别返回:{"ret":0,"rid":76,"ID":1,"data":{"Ret":0,"ChannelInfo":""}} 和 {"ret":0,"rid":76,"ID":2,"data":{"Ret":0,"ChannelInfo":""}} 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窗口对讲 海康及大华私有协议播放有效 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最大音量 海康及大华私有协议播放有效 请求:{"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最大音量 海康及大华私有协议播放有效 请求:{"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窗口对讲请求停止 海康及大华私有协议播放有效 请求:{"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窗口录像到文件,不支持同时录制多个 大华SDK及海康MP4文件播放不支持 Type为录像方式(VLC或FFPlayer播放时有效) 0:VLC 1:ffmpeg 指定1时在播放小程序子目录存放ffmpeg程序 File为录像目标文件不指定时自动生成 如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 Second为录制限时时间(秒),0代表由前端指定停止 Second为录制限时时间(秒),0代表由前端指定停止 Para为录像参数 使用VLC时默认为vcodec=h264 使用ffmpeg时默认为-vcodec libx264 指定Second时为录制指定秒数的录像,不指定时需要主动调用Player_StopRecord结束录像 {"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窗口停止录像 大华SDK及海康MP4文件播放不支持 {"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) 动态改变分屏数量或播放内容,海康及大华私有协议播放需要指定服务器信息参数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为服务器上的文件名称 海康ch0001代表第一个通道 ch0002代表第二个通道 以此类推 Reverse为1代表倒放 默认0按时间线播放 大华播放时需要先调用Player_SearchFile查找得到Uri指定的录像文件 海康举例:{"req":"Player_PlayBackByName","rid":88,"para":[{"ID":1,"Reverse":0,"Uri":"ch0001_00000000129000000"},{"ID":2,"Reverse":1,"Uri":"ch0002_00000000138000000"}]} 大华举例:{"req":"Player_PlayBackByName","rid":88,"para":[{"ID":1,"Reverse":0,"Uri":"/mnt/sd/2023-10-07/001/dav/06/06.37.14-06.37.34[M][0@0][0].dav"}]} 返回:{"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窗口回放指定回放起始和结束时间,必须先登录 海康及大华私有协议播放有效 Channel指定通道号 Begin和End为指定回放起始和结束时间,时间为UNIX时间戳,从1970年1月1号零点零分零秒开始 Reverse为1代表倒放 {"req":"Player_PlayBackByTime","rid":89,"para":[{"ID":1,"Channel":33,"Begin":1696623200,"End":1696723200,"Reverse":0},{"ID":2,"Channel":34,"Begin":1696713200,"End":1696723200,"Reverse":1}]} 返回:{"ret":0,"rid":89,"ID":1,"data":{"Ret":0,"PlayID":1}} 和 {"ret":0,"rid":89,"ID":2,"data":{"Ret":0,"PlayID":2}} PlayID为当前播放ID 50) 指定ID窗口回放控制 海康及大华私有协议播放有效 必须先调用了回放Player_PlayBackByName或Player_PlayBackByTime接口 Type控制类型:1开始播放 2停止播放 3暂停播放 4恢复播放(在暂停后调用将恢复暂停前的速度播放)5快放 6慢放 7正常速度播放 8单帧放 9打开声音 10关闭声音 11调节音量,取值范围[0,0xffff] 12改变文件回放的进度 13获取文件回放的进度 14获取当前已经播放的时间(按文件回放的时候有效 仅海康) 15获取当前已经播放的帧数(按文件回放的时候有效 仅海康) 16获取当前播放文件总的帧数(按文件回放的时候有效 仅海康) 17获取当前播放文件总的时间(按文件回放的时候有效 仅海康) 24设置码流速度(海康最低256kbps 大华是帧数) 25保持于设备的心跳 仅海康 26按绝对时间定位 27获取按时间回放对应时间段内的所有文件的总长度 29倒放转为正放 30正放改为倒放 举例:请求暂停播放或恢复播放: {"req":"Player_PlayBackControl","rid":90,"para":[{"ID":1,"Type":3},{"ID":2,"Type":4}]} 举例:11调节音量 12改变回放进度等需要设置,Val控制值 {"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窗口播放速率,FFPlayer和VLC播放引擎有效 Rate 1算正常速度 FFPlayer引擎:取值范围0.1-2 VLC引擎:0.5半速, 2.0快一倍 请求:{"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) 设置指定ID窗口字幕信息,VLC播放引擎及FFPlayer有效,举例: 指定的参数,需要的才设置,必须视频开始播放才能设置 Text 文字内容 Opacity 透明度 0-256 0完全透明 256完全不透明 Position(VLC播放可设置) 显示位置有center left right top bottom top-left top-right bottom-left bottom-right 不指定时由X和Y坐标决定 X 和 Y分别指定文字开始坐标 W和H分别指定文字显示宽度和高度 FFPlayer需要设置 Color 颜色 可用长整型(COLORREF),也可以用#000000这样的颜色值 Size 字体大小 Timeout 超时 请求1(VLC):{"req":"Player_MarqueePut","rid":94,"para":[{"ID":1,"Text":"Hello1","Position":"TOP","Timeout":0,"Color":"16777215","Opacity":128,"Refresh":1,"Size":50,"X":50,"Y":50},{"ID":2,"Text":"Hello2","Position":"TOP","Timeout":0,"Color":"16777215","Opacity":255,"Refresh":1,"Size":50,"X":50,"Y":50}]} 请求2(FFPlayer):{"req":"Player_MarqueePut","rid":94,"para":[{"ID":1,"Text":"Hello","Color":"16777215","Opacity":128,"Size":50,"X":50,"Y":50,"W":200,"H":50}]} 分别返回:{"ret":0,"rid":94,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":94,"ID":2,"data":{"Ret":0}} 55) 取指定ID窗口字幕信息,VLC播放引擎有效,举例: 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) 控制指定ID窗口字幕,VLC播放引擎有效,举例: 请求:{"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) 获取水印显示信息,VLC播放引擎有效 {"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缓存数,VLC播放引擎有效 播放时指定了帧缓存参数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的效果,VLC及FFPlayer播放引擎有效 VLC播放引擎中FrameCount 为帧数量,不指定时默认为1 不支持回退操作,仅支持视频文件和回放流 FFPlayer播放引擎中FrameCount 为毫秒值,负值代表回退,正值代表向前,仅支持视频文件和回放流 {"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}} 74)HTTP同步方式上传视频到服务器或下载视频到本地,上传主要用于上传截图和录像到服务器保存 Type 1同步上传 0下载(支持异步,设置Asyn为1) Agent、Cookie及Auth Cookie可传浏览器中的Cookie或通过Auth授权验证上传权限,默认为空,非空时需要先做UrlEnocde编码 Local 上传文件本地路径或下载文件保存路径,如果不指定默认用当前打开文档,需要做UrlEncode编码 Url 上传或下载的地址,需要做UrlEncode编码 Type为1时,可增加参数Para,对应POST数据包中需要传递的参数param 默认上传文件名为upfile,否则可通过NodeName设置自己的文件参数名称 Type为0时,可增加参数MD5及FileSize,下载文件的哈希值及大小,用于校验下载文件的完整性,可默认空或0 {"req":"Player_NetFile","rid":101,"para":{"Type":1,"Agent":"","Cookie":"","Auth":"","Para":"","Local":"","Url":"http://zorrosoft.com/wp-admin/admin-ajax.php"}} 返回:{"ret":0,"rid":35,"data":{"Ret":"0","Info":{}}} Info为上传到服务器返回的信息 75) 指定ID窗口检索录像文件,必须先登录 海康及大华私有协议播放有效 Channel指定通道号 Begin和End为指定回放起始和结束时间,时间为UNIX时间戳,从1970年1月1号零点零分零秒开始 StreamType 流类型 0-同一个时间段只返回一种录像,优先级顺序为:主码流、子码流、三码流,1-子码流,2-三码流,3-主码流,254-双码流搜索(优先返回主码流录像,没有主码流录像时返回子码流录像) FileType 文件类型 {"req":"Player_SearchFile","rid":115,"para":[{"ID":1,"Channel":33,"Begin":1665100800,"End":1665187200,"StreamType":0},{"ID":2,"Channel":34,"Begin":1665100800,"End":1665187200,"StreamType":1}]} 返回:{"ret":0,"rid":115,"ID":1,"data":{"Ret":0,"SID":1}} 和 {"ret":0,"rid":115,"ID":2,"data":{"Ret":0,"SID":2}} SID为当前搜索序号,最终搜索结果通过事件返回,事件包中包含SID参数 76) 指定ID窗口根据名称下载录像文件,必须先登录 海康及大华私有协议播放有效 Uri为服务器上的文件名或下载路径 海康ch0001代表第一个通道 ch0002代表第二个通道 以此类推 大华下载时需要先调用Player_SearchFile查找得到Uri指定的录像文件 File为录像目标文件不指定时自动生成 如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 海康具体:{"req":"Player_DownVideoByName","rid":116,"para":[{"ID":1,"Uri":"ch0001_00000000129000000","File":"D:/Zorro/ch0001_00000000129000000.mp4"},{"ID":2,"Uri":"ch0002_00000000138000000","File":"D:/Zorro/ch0002_00000000138000000.mp4"}]} 大华举例:{"req":"Player_DownVideoByName","rid":116,"para":[{"ID":1,"Uri":"/mnt/sd/2023-10-07/001/dav/06/06.37.14-06.37.34[M][0@0][0].dav","File":"D:/Zorro/06.37.14_06.37.34.dav"}]} 返回:{"ret":0,"rid":116,"ID":1,"data":{"Ret":0,"DID":1}} 和 {"ret":0,"rid":116,"ID":2,"data":{"Ret":0,"DID":2}} DID为下载序号,下载进度通知中包含此参数 77) 指定ID窗口根据时间下载录像文件,必须先登录 海康及大华私有协议播放有效 Channel 指定通道号 SteamType 指定下载流类型 海康默认0主码流 1子码流 大华默认0所有录像 1外部报警录像 2动态检测报警录像 3所有报警录像 Begin和End为指定回放起始和结束时间,时间为UNIX时间戳,从1970年1月1号零点零分零秒开始 {"req":"Player_DownVideoByTime","rid":117,"para":[{"ID":1,"Channel":33,"Begin":1665102256,"End":1665104363,"File":"D:/Zorro/ch0001_00000000095000000.mp4"},{"ID":2,"Channel":1,"Begin":1665104363,"End":1665108028,"File":"D:/Zorro/test_1665108028.dav"}]} 返回:{"ret":0,"rid":117,"ID":1,"data":{"Ret":0,"DID":1}} 和 {"ret":0,"rid":117,"ID":2,"data":{"Ret":0,"DID":2}} DID为下载序号,下载进度通知中包含此参数 78) 指定ID窗口旋转画面 FFPlayer播放有效 Angle指定顺时针的旋转角度 {"req":"Player_Rotation","rid":118,"para":[{"ID":1,"Angle":90},{"ID":2,"Angle":190}]} 返回:{"ret":0,"rid":118,"ID":1,"data":{"Ret":0,"Angle":30}} 和 {"ret":0,"rid":118,"ID":2,"data":{"Ret":0,"Angle":60}} 返回Angle为当前角度 79) 指定ID窗口局部显示画面 FFPlayer播放有效 X和Y分别指定局部显示的坐标 W和H指定局部显示的宽度和高度,高度和宽度都设置0代表取消局部显示 {"req":"Player_LocalShow","rid":119,"para":[{"ID":1,"X":50,"Y":50,"W":200,"H":200},{"ID":2,"X":50,"Y":50,"W":300,"H":300}]} 返回:{"ret":0,"rid":119,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":119,"ID":2,"data":{"Ret":0}} 返回Angle为当前角度 80) 指定ID窗口叠加网页中的渲染内容,Widows 8及以上版本操作系统正常支持,本机需要安装Microsoft Edge WebView2 Runtime Url为透明网页地址,如有特殊符号请先进行UrlEncode,设置为空字符串代表取消叠加 Alpha 透明度(0-255) 默认255不透明,Windows 7及以下版本系统不支持透明 Rect节点设置叠加窗口位置和大小,不设置时代表全部区域,E代表边距默认1,X/Y/W/H分别代表叠加窗口在分屏窗口中显示的起始点和宽高,P为显示位置类型,大于0时替代X和Y,1左上 2右上 3左下 4右下 {"req":"Player_FloatWebInfo","rid":120,"para":[{"ID":1,"Url":"https://output.jsbin.com/dopavun"},{"ID":2,"Alpha":70,"Url":"https://output.jsbin.com/dopavun"}]} {"req":"Player_FloatWebInfo","rid":120,"para":[{"ID":1,"Url":"https://output.jsbin.com/dopavun","Rect":{"X":0,"Y":0,"P":0,"W":300,"H":300}}]} 返回:{"ret":0,"rid":120,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":120,"ID":2,"data":{"Ret":0}} 81) 指定ID窗口叠加网页注入脚本运行 Script为脚本内容,请先进行UrlEncode,设置为空字符串代表取消叠加 Init 初始化 {"req":"Player_FloatWebInjectScript","rid":121,"para":[{"ID":1,"Init":0,"Script":"window.getComputedStyle(document.body).backgroundColor"},{"ID":2,"Init":0,"Url":"if%20(window.parent%20!%3D%3D%20window.top)%7B%0A%09delete%20window.open%3B%0A%7D"}]} 返回:{"ret":0,"rid":121,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":121,"ID":2,"data":{"Ret":0}} 82) 指定多个同类视频文件进行合并,合并结果通过事件通知返回 Type 合并引擎 1:FFMpeg Src 需要合并的原视频路径数组 文件名及路径需要先做UrlEncode编码 Out 合并生成目标 如设置了需要先做UrlEncode编码,没设置自动在默认路径生成一个mp4视频文件名 举例: 请求:{"req":"Player_MergeVideo","rid":122,"para":{"Type":1,"Src":["d:/Zorro/test5.mp4","d:/Zorro/test6.mp4"],"Out": "dest.mp4"}} 返回:{"ret":0,"rid":122,"data":{"Ret":0}} 事件通知合并结果 aid:对应Player_MergeVideo的请求rid Size:合并目标视频文件大小 PID:合并进程 File:合并最终形成的目标视频文件 {"event":"Player_MergeOK","aid":122,"PID":0,"data":{"Ret":0,"File":"dest.mp4","Size":0}} 83) 指定分屏添加轮播内容,一般用于大视频被切片时依次轮播 比如1分屏正在播放Url地址内容(要求是文件或回放视频),当播放结束时马上切换到轮播内容,切换时没有延迟 Uri中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递 Uri如非本地全路径,默认使用中间件程序Data子目录作为根目录使用 请求:{"req":"Player_AddPreparePlay","rid":123,"para":[{"ID":1,"Uri":"d:/zorro/play.mp4","Name":"PreparePlay","Option":"Link=1 PlayEngine=3"}]} 返回:{"ret":0,"rid":123,"data":{"Ret":0}} 84) 设置指定分屏窗口是否禁用双击全屏功能 DisableDBFull 设置1时禁用,默认不禁用 {"req":"Player_PutDisableDBFull","rid":104,"para":[{"ID":1,"DisableDBFull":1},{"ID":2,"DisableDBFull":0}]} 分别返回:{"ret":0,"rid":104,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":104,"ID":2,"data":{"Ret":0}} 85) 获取指定分屏窗口的播放日志 {"req":"Player_GetPlayLog","rid":105,"para":[{"ID":1},{"ID":2}]} 分别返回:{"ret":0,"rid":105,"ID":1,"data":[]} 和 {"ret":0,"rid":105,"ID":2,"data":[]} data中包含播放日志记录 5、RTSP网页多引擎播放器接收的通知: 这些通知必须通过WebSocket连接到此小程序侦听的端口才能接收到。 A、小程序: 1) Selected 选中分屏窗口序号通知 ID是分屏序号 aid是播放实例ID 下同 {"event":"Player_Selected","ID":1,"rid":1,"data":{}} 2) FullScreen 分屏窗口切换全屏通知 {"event":"Player_FullScreen","ID":1,"rid":1,"data":{}} 3) 录像结束通知(限时录制时发出) ID 为窗口序号 PID为录像ID Size录像文件大小 File录像实际全路径 {"event":"Player_StopRecord","ID":1,"rid":1,"data":{"Ret":0,"PID":1,"File":"D:/Zorro/test.mp4","Size":321}} 4) 登录状态通知,播放MP4等本地文件无效 {"event":"Player_LoginStatus","ID":1,"rid":1,"data":{"LID":1,"Status":0,"Desc":"登录失败"}} 5) 海康及大华接口异常通知 Type 0x8001语音对讲异常 0x8003网络预览异常 0x8005预览时重新连接 0x8010回放异常 0x8015预览时重连成功 {"event":"Player_Exception","ID":1,"rid":1,"data":{"Type":0x8001}} 6) 海康及大华SDK错误通知 {"event":"Player_SDKErr","ID":1,"rid":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,"rid":1,"data":{"Type":1,"Val":0}} 8) 是否静音通知 Mute为1是静音 0非静音 Volume音量0-100 {"event":"Player_SoundStatus","ID":1,"rid":1,"data":{"Mute":1,"Volume":80}} 9) 帧播放通知 CacheCount当前缓存帧数 CurDraw当前绘制帧在缓存中的序号 {"event":"Player_FramePlaying","ID":1,"rid":1,"data":{"CacheCount":30,"CurDraw":0}} 10) 音频信息通知 Format格式 Rate速率 Channel通道数量 {"event":"Player_AudioInfo","ID":1,"rid":1,"data":{"Format":"S16N","Rate":8000,"Channel":2}} 11) 音柱通知 Left左声道声音大小 Right右声道声音大小 {"event":"Player_AudioWave","ID":1,"rid":1,"data":{"Left":30,"Right":20}} 12) 海康及大华私有协议搜索硬盘录像机上的录像结果通知 {"event":"Player_SearchResult","ID":1,"rid":1,"data":{"SID":1,"Info":[{"Name":"ch0001_00000000094000100","Size":1053565500,"FType":0,"SType":0,"Locked":0,"STime":1665100588,"ETime":1665102259},{"Name":"ch0001_00000000095000000","Size":1065176994,"FType":0,"SType":0,"Locked":0,"STime":1665102256,"ETime":1665104363},{"Name":"ch0001_00000000097000000","Size":1065309215,"FType":0,"SType":0,"Locked":0,"STime":1665104363,"ETime":1665108028}]}} FType 文件类型 SType流类型 Locked是否锁定 STime流开始时间 ETime流结束时间 13) 海康及大华私有协议下载硬盘录像机上的录像进度通知 {"event":"Player_DownPos","ID":1,"rid":2,"data":{"DID":1,"Pos":100}} Pos为100时下载结束 14) 叠加网页导航结果通知 {"event":"Player_WebNavResult","ID":1,"rid":1,"aid":1,"data":{"Result":""}]}} Result UrlEncode后的请求结果 15) 叠加网页注入脚本结果通知 {"event":"Player_WebScriptResult","ID":1,"rid":1,"aid":1,"data":{"Result":""}]}} Result UrlEncode后的请求结果 16) 播放错误日志通知 {"event":"Player_PlayLog","ID":1,"rid":1,"aid":1,"data":{"Level":1,"Line":18,"Module":"","Desc":""}]}} Level 日志级别 1错误日志 2警告日志 4通知日志 Module 模块名称 Line 代码行数 Desc 日志描述 B、PluginOK支持的事件通知: 1) 小程序是否响应了热键全屏 {"event":"Player_FullScreen","rid":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