VlcWebPlayer.txt 28.2 KB
Newer Older
1
VLC多媒体播放网页小程序(支持多路):基于跨浏览器的原生小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )单机高级版开发,底层调用VLC的ActiveX控件axvlc.dll(需安装VLC media player或搭配绿色版VLC播放程序)可实现在网页中内嵌播放多路RTSP的实时视频流。最低可用在Chrome 41、Firefox 50、Edge 80(Chromium内核)、360极速/安全、IE、Oprea 36、QQ等浏览器,也兼容运行于这些浏览器的最新版本。
W
wangzuohuai 已提交
2 3 4 5 6 7 8

1、PluginOK(牛插)中间件的安装:
1)、如果是exe的安装程序,请直接运行安装;
2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装;
3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。

2、VLC多媒体播放网页小程序控制相关接口:
W
wangzuohuai 已提交
9
说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost:80?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
W
wangzuohuai 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
HTTP网页在线测试:http://zorrosoft.com/vlcwebfull.html  HTTPS网页在线测试:https://zorrosoft.com/vlcwebPlayer.html
前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码;
A、标记小程序的显示位置和大小
.VLCWebPlayer {
            margin: 20px 0 0 20px;
            width: 480px;
            height: 320px;
            border: 1px solid blue;
        }
或者
.VLCWebPlayer{
            width: 480px;
            height: 320px;
            top: 20px;
            left: 20px;
            border: 1px solid blue;
        }
如果在网页Header区没有标记小程序初始显示位置和大小,请在启动小程序的JSON参数里,添加以下参数:
"Left":20,"Top":20,"Width":480,"Height":320

B、网页中嵌入元素
支持IFrame的:
<iframe name="VLCWebPlayer" id="VLCWebPlayer" src="VLCWebPlayer3.html" frameborder="0" align="left" width="550" height="540" scrolling="no>
    	<param ID="2" Play="http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4" />
    	<param ID="3" Play="rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream" Caching="500" />
    </iframe>
或者直接用
<div id="VLCWebPlayer" class="VLCWebPlayer"</div>

另外需要嵌入用到的JS脚本,脚本程序是完全开源的。

播放窗口选中状态时单击即可全屏显示,全屏显示状态通过ESC按键取消,全屏切换会发送JSON包的VLC_FullScreen通知。

1)、请求启动VLC多媒体播放网页小程序:
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自动适配网页高度和宽度显示  64根据标题避免重复加载相同的小程序
IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标
BarW和BarH分别是网页右侧和底部预留区域
小程序实际显示首先会基于网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正
ShowType 播放窗口分屏类型,默认1只显示一个播放窗口,支持1-21 24 25等多达20种多窗口播放。
Url:加载小程序所在的网页实际地址
Open :启动后自动播放的流地址或本地多媒体文件路径,斜杠\替换成/再传
53
注意:Open和Url如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递
W
wangzuohuai 已提交
54 55
举例:
自动识别当前浏览器指定位置和大小启动:
W
wangzuohuai 已提交
56
{"req":"Wrl_VLCWebPlayer","rid":4,"para":{"Type":"0","Title":"VLC Web Player","Flag":2,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/VLCWebPlayer.html","ShowType":1,"Open":"https://vjs.zencdn.net/v/oceans.mp4"}}
W
wangzuohuai 已提交
57 58

自动识别当前浏览器自动适配网页大小启动:
W
wangzuohuai 已提交
59
{"req":"Wrl_VLCWebPlayer","rid":4,"para":{"Type":"0","Title":"VLC Web Player","Flag":10,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/VLCWebPlayer.html","ShowType":1,"Open":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4"}}
W
wangzuohuai 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

当前页指定位置自动适配网页加载测试
http://zorrosoft.com/VLCWebPlayer.html

启动后会前后收到三个JSON数据包
A、{"ret":0,"rid":1,"data":{"ID":2}}
代表小程序WS侦听服务就绪
B、{"event":"Wrl_Listen","aid":2,"data":{"SID":"123","PID":"VLCWebPlayer","port":935}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如重新指定播放一个视频。
代表小程序创建成功,返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。
C、{"event":"Wrl_AppletOK","aid":2,"data":{"SID":"123","PID":"VLCWebPlayer","Port":935}}

2)、请求控制VLC多媒体播放网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
ID为Wrl_VLCWebPlayer启动小程序时返回的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,设置4和32隐藏后可通过8恢复显示
{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}}

3)、请求滚动VLC多媒体播放网页小程序:
当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}

4)、请求改变VLC多媒体播放网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
ID为Wrl_VLCWebPlayer启动小程序时返回的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为启动小程序时返回的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_VLCWebPlayer启动小程序时返回的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"}}

W
wangzuohuai 已提交
109
8)、请求缩放内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理:
W
wangzuohuai 已提交
110 111 112 113 114
ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比
{"req":"Wrl_AppletScale","rid":11,"para":{"ID":1,"Scale":120}}

3、小程序安装、升级、卸载
1)、请求安装VLC多媒体播放网页小程序
W
wangzuohuai 已提交
115
请在测试网页输入框中,输入如下请求,然后点击发送,完成安装:
W
wangzuohuai 已提交
116

117
{"req":"Plugin_Install","rid":1,"para":{"Name":"VLC内嵌网页多媒体播放小程序","PID":"VLCWebPlayer","Date":"2021-05-15","Desc":"PluginOK之上跨浏览器的VLC多媒体播放内嵌网页小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中直接内嵌使用,可播放多路海康及大华等设备的实时视频","DownAddr":"http://local.zorrosoft.com/Files/Plugin/VlcWebPlayer.pid","MD5":"C154A6A0BAEB3E750BE3AD43442C9C84","Version":"1.3.3.2","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"69D954F530666373258B4FD79A0AEFB1D3ED86F6B66BD89C9ECCBDC05DF4B3ED4BFA299704DBE61160E42D04398AA282B273BA2767D5B089B3A7AC3025AA2F1428FCDCC7A9FB7AE21D801A07BD43AEFA41EDD64868CB5C074AB7E55BA9B633FE131D0DDC54D7D291B865B48583A60FFBD7EC8FB4E1B3D348FEE919008D7B03EB533FEBABF745592350E274B898DCD16CDACCB3BC4B9621A576D231356BA3383EAF734E590EE8BFFED17113D94CBA3A5E1DE056919B2D4252FD29A7EF6BB8347FD5B06728B2B3B1B994A3393BD32F9F409F042B81769A39D87EE0F84F8025CC819B6173F9AD9B58D287F81FA330DA1347DAE4D5F40B54C2F8F140D36EC5D18964"}}
W
wangzuohuai 已提交
118 119 120 121 122

启动安装后,会不断收到安装进度直到安装结束。

2)、请求升级VLC多媒体播放网页小程序:

123
{"req":"Plugin_Update","rid":1,"para":{"Name":"VLC内嵌网页多媒体播放小程序","PID":"VLCWebPlayer","Date":"2021-05-15","Desc":"PluginOK之上跨浏览器的VLC多媒体播放内嵌网页小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中直接内嵌使用,可播放多路海康及大华等设备的实时视频","DownAddr":"http://local.zorrosoft.com/Files/Plugin/VlcWebPlayer_Update.pid","MD5":"FF49CBEA3074887A30F19EB28B2DF290","Version":"1.3.3.2","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"807F9E8A37D8D593BD5D7AAE10CAA8AC677645B26F8CE46F4DA5E9E76C08A458272DC84353FAC536586BBD59DD69FEFC02912DA956C8AE204D7E86EA4FD25FB8D9FB13D3942852A033BCE1034C22B27C047CEBEAAEA25AE5801EE9D2B80FE1A8F16F8952DACF4EA29D397629B10C6282C358466C37B71FE113AC90B8DF3876A297E610AB16ECCAA217C32DCA2F451FADF82383576608E43AFE9BD69AF73118FF8A85F6E66CEB032F8C11F1C1D48104C37B3B4EEA9EEE552FD863D6C480980F6198EC1C3FA401D4CABEB6EF998D80322F9FA1643DF4679B230265F10A07274BE4F9193904C012E43771DDEF40AF6EA6C0F96D7E01281F0A47003EC5477159C782"}}
W
wangzuohuai 已提交
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307

以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 

3)、请求卸载VLC多媒体播放网页小程序:

{"req":"Plugin_Remove","rid":3,"para":{"PID":"VLCWebPlayer","Type":8}}

4、VLC多媒体播放网页小程序转调用ActiveX接口(接口说明:https://wiki.videolan.org/Documentation:WebPlugin ),先根据Wrl_VLCWebPlayer请求启动后返回的端口号,针对此端口新建一个WebSocket连接后可执行如下指令:

A、ActiveX接口功能请求:
支持创建多个VLC的ActiveX控件窗口同时播放多路实时视频,所以请求参数里需要指定窗口序号ID,从1开始,序号原则是从左向右开始编号,然后从上到下开始顺序编号,如遇右侧多层排列窗口时,直到右侧窗口序号排序完成

1) 取指定ID播放窗口属性AutoLoop(自动循环)值,举例:
请求:{"req":"VLC_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代表正常

2) 设置指定ID控件窗口AutoLoop(自动循环)值,举例:
请求:{"req":"VLC_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) 取指定ID控件窗口AutoPlay(自动播放)值,举例:
请求:{"req":"VLC_GetAutoPlay","rid":43,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":43,"ID":1,"data":{"Ret":0,"AutoPlay":0}} 和 {"ret":0,"rid":43,"ID":2,"data":{"Ret":0,"AutoPlay":0}}

4) 设置指定ID窗口AutoPlay(自动播放)值,举例:
请求:{"req":"VLC_PutAutoPlay","rid":44,"para":[{"ID":1,"AutoPlay":1},{"ID":2,"AutoPlay":0}]}
分别返回:{"ret":0,"rid":44,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":44,"ID":2,"data":{"Ret":0}}

5) 取指定ID窗口StartTime(开始时间)值,举例:
请求:{"req":"VLC_GetStartTime","rid":45,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":45,"ID":1,"data":{"Ret":0,"StartTime":0}} 和 {"ret":0,"rid":45,"ID":2,"data":{"Ret":0,"StartTime":0}}

6) 设置指定ID窗口StartTime(开始时间)值,举例:
请求:{"req":"VLC_PutStartTime","rid":46,"para":[{"ID":1,"StartTime":0},{"ID":2,"StartTime":0}]}
分别返回:{"ret":0,"rid":46,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":46,"ID":2,"data":{"Ret":0}}

7) 取指定ID窗口MRL(播放源)值,举例:
请求:{"req":"VLC_GetMRL","rid":47,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":47,"ID":1,"data":{"Ret":0,"MRL":""}} 和 {"ret":0,"rid":47,"ID":2,"data":{"Ret":0,"MRL":""}}

8) 设置指定ID窗口MRL(播放源)值,举例:
请求:{"req":"VLC_PutMRL","rid":48,"para":[{"ID":1,"MRL":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"},{"ID":2,"MRL":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"}]}
分别返回:{"ret":0,"rid":48,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":48,"ID":2,"data":{"Ret":0}}

9) 取指定ID窗口Visible(可见性),举例:
请求:{"req":"VLC_GetVisible","rid":49,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":49,"ID":1,"data":{"Ret":0,"Visible":1}} 和 {"ret":0,"rid":49,"ID":2,"data":{"Ret":0,"Visible":0}}

10) 设置指定ID窗口Visible(可见性),举例:
请求:{"req":"VLC_PutVisible","rid":48,"para":[{"ID":1,"Visible":1},{"ID":2,"Visible":0}]}
分别返回:{"ret":0,"rid":50,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":50,"ID":2,"data":{"Ret":0}}

11) 取指定ID窗口Volume(音量),举例:
请求:{"req":"VLC_GetVolume","rid":51,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":51,"ID":1,"data":{"Ret":0,"Volume":0}} 和 {"ret":0,"rid":51,"ID":2,"data":{"Ret":0,"Volume":0}}

12) 设置指定ID窗口Volume(音量),举例:
请求:{"req":"VLC_PutVolume","rid":52,"para":[{"ID":1,"Volume":0},{"ID":2,"Volume":0}]}
分别返回:{"ret":0,"rid":52,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":52,"ID":2,"data":{"Ret":0}}

13) 取指定ID窗口BackColor(背景色),举例:
请求:{"req":"VLC_GetBackColor","rid":53,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":53,"ID":1,"data":{"Ret":0,"BackColor":0}} 和 {"ret":0,"rid":53,"ID":2,"data":{"Ret":0,"BackColor":0}}

14) 设置指定ID窗口BackColor(背景色),举例:
请求:{"req":"VLC_PutBackColor","rid":54,"para":[{"ID":1,"BackColor":0},{"ID":2,"BackColor":0}]}
分别返回:{"ret":0,"rid":54,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":54,"ID":2,"data":{"Ret":0}}

15) 取指定ID窗口Toolbar(工具栏)显示与否,举例:
请求:{"req":"VLC_GetToolbar","rid":55,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":55,"ID":1,"data":{"Ret":0,"Toolbar":0}} 和 {"ret":0,"rid":55,"ID":2,"data":{"Ret":0,"Toolbar":0}}

16) 设置指定ID窗口Toolbar(工具栏)显示与否,举例:
请求:{"req":"VLC_PutToolbar","rid":56,"para":[{"ID":1,"Toolbar":0},{"ID":2,"Toolbar":0}]}
分别返回:{"ret":0,"rid":56,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":56,"ID":2,"data":{"Ret":0}}

17) 取指定ID窗口FullScreenEnabled(全屏启用),举例:
请求:{"req":"VLC_GetFullScreenEnabled","rid":57,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":57,"ID":1,"data":{"Ret":0,"FullScreenEnabled":0}} 和 {"ret":0,"rid":57,"ID":2,"data":{"Ret":0,"FullScreenEnabled":0}}

18) 设置指定ID窗口FullScreenEnabled(全屏启用),举例:
请求:{"req":"VLC_PutFullScreenEnabled","rid":58,"para":[{"ID":1,"FullScreenEnabled":0},{"ID":2,"FullScreenEnabled":0}]}
分别返回:{"ret":0,"rid":58,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":58,"ID":2,"data":{"Ret":0}}

19) 取指定ID窗口版本信息,举例:
请求:{"req":"VLC_GetVersionInfo","rid":59,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":59,"ID":1,"data":{"Ret":0,"VersionInfo":""}} 和 {"ret":0,"rid":59,"ID":2,"data":{"Ret":0,"VersionInfo":""}}

20) 取指定ID窗口多媒体描述信息,举例:
请求:{"req":"VLC_MediaDescGet","rid":60,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":60,"ID":1,"data":{"Ret":0,"Title":"","Artist":"","Genre":"","Copyright":"","Album":"","TrackNumber":"","Desc":"","Rating":"","Date":"","Setting":"","Url":"","Language":"","NowPlaying":"","Publisher":"","EncodedBy":"","ArtworkURL":"","TrackID":""}} 和 {"ret":0,"rid":60,"ID":2,"data":{"Ret":0,"Title":"","Artist":"","Genre":"","Copyright":"","Album":"","TrackNumber":"","Desc":"","Rating":"","Date":"","Setting":"","Url":"","Language":"","NowPlaying":"","Publisher":"","EncodedBy":"","ArtworkURL":"","TrackID":""}}

21) 取指定ID窗口音频信息,举例:
取时自动获得全部属性
请求:{"req":"VLC_AudioGet","rid":61,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":61,"ID":1,"data":{"Ret":0,"Mute":0,"Volume":100,"Track":"","TrackNumber":"","Channel":"","Desc":""}} 和 {"ret":0,"rid":61,"ID":2,"data":{"Ret":0,"Mute":"","Volume":"","Track":"","TrackNumber":"","Channel":"","Desc":""}}

22) 设置指定ID窗口音频信息,举例:
设置时不要求全部属性,只设置需要设置的
请求:{"req":"VLC_AudioPut","rid":62,"para":[{"ID":1,"Mute":0,"Volume":100,"Track":"","TrackNumber":"","Channel":"","Desc":""},{"ID":2,"Mute":"","Volume":""}]}
分别返回:{"ret":0,"rid":62,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":62,"ID":2,"data":{"Ret":0}}

23) 取指定ID窗口播放信息,举例:
取时自动获得全部属性
请求:{"req":"VLC_GetPlay","rid":63,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":63,"ID":1,"data":{"Ret":0,"IsPlay":1,"ItemCount":3,"CurrentItem":1}} 和 {"ret":0,"rid":63,"ID":2,"data":{"Ret":0,"IsPlay":1,"ItemCount":5,"CurrentItem":2}}

24) 指定ID窗口添加播放内容,举例:
Uri需要进行UrlEncode编码,Option可不设置用缺省值
请求:{"req":"VLC_AddPlay","rid":64,"para":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"test","Option":":network-caching=300"},{"ID":2,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"test","Option":":rtsp-tcp"}]}
分别返回:{"ret":0,"rid":64,"ID":1,"data":{"Ret":0,"Item":1}} 和 {"ret":0,"rid":64,"ID":2,"data":{"Ret":0,"Item":2}}

25) 指定ID窗口播放(指定多媒体),举例:
ItemId是序号,可缺省
请求:{"req":"VLC_Play","rid":65,"para":[{"ID":1,"ItemId":1},{"ID":2}]}
分别返回:{"ret":0,"rid":65,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":65,"ID":2,"data":{"Ret":0}}

26) 控制指定ID窗口播放器,举例:
Type可以是这些值:Pause,Play,Stop,StopAsync,Next,Prev,Clear,TogglePause
请求:{"req":"VLC_Control","rid":66,"para":[{"ID":1,"Type":"Pause"},{"ID":2,"Type":"Play"}]}
分别返回:{"ret":0,"rid":66,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":66,"ID":2,"data":{"Ret":0}}

27) 指定ID窗口移除多媒体内容,举例:
ItemId是当前已存在的序号
请求:{"req":"VLC_RemoveItem","rid":67,"para":[{"ID":1,"ItemId":1},{"ID":2,"ItemId":2}]}
分别返回:{"ret":0,"rid":67,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":67,"ID":2,"data":{"Ret":0}}

28) 指定ID窗口解析选项,举例:
请求:{"req":"VLC_Parse","rid":68,"para":[{"ID":1,"Option":"","Timeout":0},{"ID":2,,"Option":"","Timeout":0}]}
分别返回:{"ret":0,"rid":68,"ID":1,"data":{"Ret":0,"Status":0}} 和 {"ret":0,"rid":68,"ID":2,"data":{"Ret":0,"Status":0}}

29) 取指定ID窗口SubTitle信息,举例:
NameID指定时获取描述信息
请求:{"req":"VLC_GetSubTitle","rid":69,"para":[{"ID":1,"NameID":0},{"ID":2}]}
分别返回:{"ret":0,"rid":69,"ID":1,"data":{"Ret":0,"Spu":1,"SpuNumber":0,"Desc":""}} 和 {"ret":0,"rid":69,"ID":2,"data":{"Ret":0,"Spu":1,"SpuNumber":0}}

30) 设置指定ID窗口SubTitleSpu,举例:
请求:{"req":"VLC_PutSubTitle","rid":70,"para":[{"ID":1,"Spu":0},{"ID":2,"Spu":0}]}
分别返回:{"ret":0,"rid":70,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":70,"ID":2,"data":{"Ret":0}}

31) 取指定ID窗口视频信息,举例:
TrackID指定时获取描述信息
请求:{"req":"VLC_VideoGet","rid":71,"para":[{"ID":1,"TrackID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":71,"ID":1,"data":{"Ret":0,"FullScreent":0,"Width":0,"Height":0,"SubTitle":0,"Track":0,"TrackCount":0,"TeleText":0,"Scale":100,"AspectRatio":"","Crop":"","Desc":""}} 和 {"ret":0,"rid":71,"ID":2,"data":{"Ret":0,"Width":0,"Height":0,"SubTitle":0,"Track":0,"TrackCount":0,"TeleText":0,"Scale":100,"AspectRatio":"","Crop":""}}

32) 设置指定ID窗口视频信息,举例:
需要的才设置
请求:{"req":"VLC_VideoPut","rid":72,"para":[{"ID":1,"FullScreen":1,"Scale":100,"AspectRatio":0,"SubTitle":0,"TeleText":0,"Track":0},{"ID":2,"FullScreen":0}]}
分别返回:{"ret":0,"rid":72,"data":{"Ret":0}} 和 {"ret":0,"rid":72,"ID":2,"data":{"Ret":0}}

33) 切换指定ID窗口视频全屏,举例:
请求:{"req":"VLC_VideoToggleFullscreen","rid":73,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":73,"data":{"Ret":0}} 和 {"ret":0,"rid":73,"ID":2,"data":{"Ret":0}}

34) 切换指定ID窗口视频图文,举例:
请求:{"req":"VLC_VideoToggleTeletext","rid":74,"para":[{"ID":1},{"ID":2}]}
分别返回:{"ret":0,"rid":74,"data":{"Ret":0}} 和 {"ret":0,"rid":74,"ID":2,"data":{"Ret":0}}

35) 取指定ID窗口字幕信息,举例:
Text指定时获取文字信息 Position指定时获取位置信息
请求:{"req":"VLC_MarqueeGet","rid":75,"para":[{"ID":1,"Text":1,"Position":1},{"ID":2}]}
分别返回:{"ret":0,"rid":75,"ID":1,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":"","Text":"","Position":""}} 和 {"ret":0,"rid":75,"ID":2,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":""}}

36) 设置指定ID窗口字幕信息,举例:
需要的才设置
请求:{"req":"VLC_MarqueePut","rid":76,"para":[{"ID":1,"Text":"Hello","Position":"","Color":0,"Opacity":0,"Refresh":0,"Size":0,"X":0,"Y":0},{"ID":2,"Opacity":50}]}
分别返回:{"ret":0,"rid":76,"data":{"Ret":0}} 和 {"ret":0,"rid":76,"ID":2,"data":{"Ret":0}}

37) 控制指定ID窗口字幕,举例:
请求:{"req":"VLC_MarqueeControl","rid":77,"para":[{"ID":1,"Enable":1},{"ID":2,"Enable":0}]}
分别返回:{"ret":0,"rid":77,"data":{"Ret":0}} 和 {"ret":0,"rid":77,"ID":2,"data":{"Ret":0}}

38) 指定ID窗口帧速控制工具,举例:
Mode为空时禁用
请求:{"req":"VLC_DeinterlaceControl","rid":78,"para":[{"ID":1,"Mode":"my_mode"},{"ID":2,"Mode":""}]}
分别返回:{"ret":0,"rid":78,"data":{"Ret":0}} 和 {"ret":0,"rid":78,"ID":2,"data":{"Ret":0}}

39) 动态改变分屏数量或播放内容
ShowType指定分屏数量,如果不变就不设置
Play重新指定播放内容
请求范例1:{"req":"VLC_ChangePlay","rid":79,"para":{"ShowType":2}}
请求范例2:{"req":"VLC_ChangePlay","rid":79,"para":{"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet1","Option":":rtsp-tcp"},{"ID":2,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Name":"BrowserApplet2","Option":":file-caching=300"}]}}
308
请求范例3:{"req":"VLC_ChangePlay","rid":79,"para":{"ShowType":3,"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet1","Option":":rtsp-tcp :network-caching=300"},{"ID":2,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Name":"BrowserApplet2","Option":":file-caching=400"},{"ID":3,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet3","Option":":rtsp-tcp"}]}}
W
wangzuohuai 已提交
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434
分别返回:{"ret":0,"rid":80,"data":{"Ret":0,"Play":[]}}

40) 设置当前焦点播放窗口
ID是当前播放窗口序号,ID是从1开始,需要确保不越界
{"req":"VLC_SetSelect","rid":80,"para":{"ID":2}}
返回:{"ret":0,"rid":80,"ID":2,"data":{"Ret":1}}

41) 获取当前焦点播放窗口序号
{"req":"VLC_GetSelect","rid":81,"para":{}}
返回:{"ret":0,"rid":81,"ID":2,"data":{"Ret":1}}
ID为当前播放焦点窗口

42) 指定ID窗口截图
Type 指定图像类型,默认4(PNG) 可指定1(BMP)、3(JPG)
Count截取图数量,默认截取一张,Delay指定延迟毫秒数开始,Interval多张时间隔毫秒数
PathType 指定截图图片保存路径类型,0默认中间件临时目录,1操作系统桌面 2当前登录用户我的图片目录
多窗口播放情况下,只能指定某个窗口截图,不能同时指定多个窗口
请求:{"req":"VLC_VideoSnapshot","rid":82,"para":[{"ID":1,"Type":4,"Count":3,"Delay":1000,"Interval":200}]}
分别返回:{"ret":0,"rid":82,"data":{"Ret":0,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} 和 {"ret":0,"rid":80,"ID":2,"data":{"Ret":0,,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}}

43) 设置RTSP流网络方式,HTTP还是TCP
{"req":"VLC_SetRtspTcp","rid":83,"para":{"Tcp":1}}
返回:{"ret":0,"rid":83,"data":{"Ret":1}}

44) 获取RTSP流网络方式,HTTP还是TCP
{"req":"VLC_GetRtspTcp","rid":84,"para":{}}
返回:{"ret":0,"rid":84,"data":{"Tcp":1}}

45) 请求退出当前连接的小程序
{"req":"VLC_Exit","rid":85,"para":{}}


5、VLC多媒体播放网页小程序接收的通知:
这些通知必须使用Web Socket连接到此小程序实际侦听的端口才能接收到。
A、ActiveX事件:

1) Idle state
{"event":"VLC_MediaPlayerNothingSpeciale","ID":1,"data":{}} 

2) Opening media
{"event":"VLC_MediaPlayerOpening","ID":1,"data":{}} 

3) Buffering media
{"event":"VLC_MediaPlayerBuffering","ID":1,"data":{"cache":0}} 

4) Media is playing
{"event":"VLC_MediaPlayerPlaying","ID":1,"data":{}} 

5) Media is paused
{"event":"VLC_MediaPlayerPaused","ID":1,"data":{}} 

6) Forward playback
{"event":"VLC_MediaPlayerForward","ID":1,"data":{}} 

7) Backward playback
{"event":"VLC_MediaPlayerBackward","ID":1,"data":{}} 

8) An error has been encountered
{"event":"VLC_MediaPlayerEncounteredError","ID":1,"data":{}} 

9) End of playback reached
{"event":"VLC_MediaPlayerEndReached","ID":1,"data":{}} 

10) Playback stopped
{"event":"VLC_MediaPlayerStopped","ID":1,"data":{}} 

11) Playback stop async done
{"event":"VLC_MediaPlayerStopAsyncDone","ID":1,"data":{}} 

12) Seek changed
{"event":"VLC_MediaPlayerSeekableChanged","ID":1,"data":{"seekable":0}} 

13) Pause setting changed
{"event":"VLC_MediaPlayerPausableChanged","ID":1,"data":{"pausable":0}} 

14) Media changed
{"event":"VLC_MediaPlayerMediaChanged","ID":1,"data":{}} 

15) Title changed
{"event":"VLC_MediaPlayerTitleChanged","ID":1,"data":{"title":0}} 

16) Length changed
{"event":"VLC_MediaPlayerLengthChanged","ID":1,"data":{"length":0}} 

17) Chapter changed
{"event":"VLC_MediaPlayerChapterChanged","ID":1,"data":{"chapter":0}} 

18) Number of vout changed
{"event":"VLC_MediaPlayerVout","ID":1,"data":{"count":0}} 

19) Audio muted
{"event":"VLC_MediaPlayerMuted","ID":1,"data":{}} 

20) Audio unmuted
{"event":"VLC_MediaPlayerUnmuted","ID":1,"data":{}} 

21) Audio volume changed
{"event":"VLC_MediaPlayerAudioVolume","ID":1,"data":{"volume":0}} 

22) Selected 选中分屏窗口序号通知
{"event":"VLC_Selected","ID":1,"data":{}} 

23) ToggleFullScreen 分屏窗口切换全屏通知
{"event":"VLC_ToggleFullScreen","ID":1,"data":{}} 

23) KeyDown
{"event":"VLC_KeyDown","ID":1,"data":{"KeyCode":0,"Shift":0}} 

24) KeyPress
{"event":"VLC_KeyPress","ID":1,"data":{"KeyCode":0}} 

25) KeyUp
{"event":"VLC_KeyUp","ID":1,"data":{"KeyCode":0,"Shift":0}} 

B、PluginOK支持的事件通知:

1) VLC_FullScreen 小程序是否响应了热键全屏
{"event":"VLC_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记

2) Wrl_AppletExit 小程序退出通知
{"event":"Wrl_AppletExit","data":{"ID":1}}

6、其它
请求参数的JSON数据包,请确保是UTF-8无签名的编码。
更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。
如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938