Ti IPNC Web网页之ActiveX控件

本篇介绍关于TI IPNC网页中播放器相关的东西。

gStudio工程中添加播放器并控制播放器

打开IPNC网页时首先会自动下载ActiveX控件并安装。在这个基础上我们在gStudio工程中调用ActiveX控件留下的API就能顺利的控制播放器了。

在gStudio中有一个特殊的控件叫做gdo container

GDO is a special Loadable module that has predefined exported methods that let

GoDB VM introspect and identify the methods and properties and exposing

it as a component to the GBasic.

也就是这个控件是用于添加外部模块,使之成为GoDB的一个组件。

TI IPNC RTSP播放器就是以这种方式添加进去的。

在原有的工程中,播放器是以调用函数的方式创建的。而非显示的将gdo控件加入到frm文件中。

common.inc

  1. function createGDOControl(dims ctrlname$, dimi gdoCurX, dimi gdoCurY, dimi gdoCurWidth, dimi gdoCurHeight)
  2. createobject("GDO", ctrlname$, " x='" + gdoCurX + "' y='" + gdoCurY + "' w='" + gdoCurWidth + "' h='" + gdoCurHeight +"' ProgID='Gffx.GFFMpeg.1'" )
  3. #{ctrlName$}.scrollable=0
  4. End Function

其中ProgID是根据我们播放器ActiveX控件来设置的,这里固定不变。

让我们看liveVideo.frm页面,在liveVideo.bas文件的from_load

你会看到

  1. createGDOControl("gdoVideo",GDO_X,GDO_Y,GDO_W,GDO_H)

这样这就是创建了一个播放器,这个控件名字叫做gdoVideo,使用#gdoVideo.method这样的方式来调用这个控件的方法。

你在当前页面搜索gdovideo,你会发现liveVideo页面使用若干ActiveX的api,比如说Play,Audio,Stop等。

比如说,当liveVideo页面加载完毕时,自动播放rtsp流,这时调用form_complete全局事件函数。

在这个函数中,调用call disp_streams

  1. sub disp_streams()
  2. ".......
  3. a = #gdovideo.stop(1)
  4. if playVideoFlag = 1 then
  5. dispStr$ = ~Unable_To_Display_Msg$
  6. #lblload.hidden = 0
  7. #gdovideo.hidden = 1
  8. else
  9. dispStr$ = "Loading . . . . "
  10. 'Play stream
  11. #gdovideo.hidden = 0
  12. a = #gdovideo.play(value$)
  13. end if
  14. "....
  15. End Sub
  1. sub setAudioControl
  2. if flagAudio=1 then
  3. #gdovideo.Audio(1)
  4. elseif flagAudio=0 then
  5. #gdovideo.Audio(0)
  6. endif
  7. '#gdoVideo.hidden=0
  8. '#lblLoad.hidden=1
  9. End Sub

这个在Guide for gffx code.pdf中的API是一一对应的,只不过里面的多了一些前缀put_get_。这里暂时不理其中原理,我们要知道是如何使用。

  1. STDMETHOD(get_Audio)(/*[out, retval]*/ long *pVal);
  2. STDMETHOD(put_Audio)(/*[in]*/ long newVal);
  3. STDMETHOD(get_Stop)(long TimeOut, /*[out, retval]*/ long *pVal);
  4. STDMETHOD(get_Play)(BSTR Url, /*[out, retval]*/ long *pVal);

问题来了,这里的Audio是调用put_Audio还是get_Audio?为什么put_play函数明明有两个参数这里只有一个?

其实get_前缀的,后面那个long *pVal是作为返回值out retval的,所以你看到如果你在gstdio中调用get_前缀的,一般需要显示的返回,二调用put_前缀的则不需要..有多少参数填多少参数。

a = #gdovideo.play(value$)

所以这里的Audio调用时调用put_前缀的那个函数。

TI IPNC网页中部分功能严重依赖于这个ActiveX播放器,不少功能是依赖这个播放器的,所以你想用html完全复制IPNC网页的功能,播放器是个大问题。

比如说IPNC网页中有一个功能划定感兴趣区域这个功能是在UIMode(2)的情况下...

修改gffx工程,并打包ActiveX.

请用Visual Studio 2008来编译此工程,以上的版本编译无法通过。

编译成功之后生成gffx.dll文件。我们拷贝原来的IPNCWebDlls.CAB文件,解压释放出里面的其它dll,用于制作新的IPNCWebDlls.CAB

其中的cabarc.exe程序在Windows XP下是自带的,在Windows7及其以上,你需要另外下载。

这是make_cab_no_cer.bat的内容

  1. @echo off
  2. set path=%path%;D:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools;D:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\
  3. echo "打包..."
  4. del /s /q tracyone.pvk tracyone.cer tracyone.spc tracyone.pfx IPNCWebDlls.CAB gffx.dll
  5. xcopy /y ..\gffx\Debug\gffx.dll .
  6. .\cabarc.exe -s 6144 N IPNCWebDlls.CAB FFMPEG_LICENSE.txt GDOBRIDGE.DLL GoDBATL.DLL gffx.dll GIPNC.INF
  7. if %errorlevel% NEQ 0 (echo Failed
  8. pause
  9. exit
  10. ) else (
  11. echo cararc successfully
  12. )
  13. del /s /q tracyone.pvk tracyone.cer tracyone.spc tracyone.pfx
  14. move IPNCWebDlls.CAB "c:\virtual_machine\share"
  15. echo "结束..."

这是make_cab.bat的内容

  1. @echo off
  2. set path=%path%;D:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools;D:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\
  3. echo "打包..."
  4. del /s /q tracyone.pvk tracyone.cer tracyone.spc tracyone.pfx IPNCWebDlls.CAB gffx.dll
  5. xcopy /y ..\gffx\Debug\gffx.dll .
  6. .\cabarc.exe -s 6144 N IPNCWebDlls.CAB FFMPEG_LICENSE.txt GDOBRIDGE.DLL GoDBATL.DLL gffx.dll GIPNC.INF
  7. if %errorlevel% NEQ 0 (echo Failed
  8. pause
  9. exit
  10. ) else (
  11. echo cararc successfully
  12. )
  13. echo "生成证书..."
  14. makecert -ss tracyone -n "CN=tracyone" -sv tracyone.pvk -r tracyone.cer
  15. cert2spc tracyone.cer tracyone.spc
  16. pvk2pfx -pvk tracyone.pvk -pi 123 -spc tracyone.spc -pfx tracyone.pfx -f
  17. echo "双击pfx文件导入到:受信任的根证书颁发机构,然后按任意键继续"
  18. pause
  19. signtool signwizard
  20. signtool timestamp /t "http://timestamp.wosign.com/timestamp" IPNCWebDlls.CAB
  21. del /s /q tracyone.pvk tracyone.cer tracyone.spc tracyone.pfx
  22. xcopy /y /r IPNCWebDlls.CAB "c:\virtual_machine\share"
  23. echo "结束..."
  24. pause

我们知道首次打开IPNC设备的网页需要下载加载这个ActiveX控件,然后最原始的这个ActiveX控件是已经申请证书了,只有那些申请证书的ActiveX控件才可以顺利的加载。否则你需要改变IE的设置,取消那些关于ActiveX的安全设置。

申请证书是要钱的,所以这就是make_cab_no_cer.bat脚本存在的意义..因为其实我们只要设置过一次IE,降低其安全性,然后加载成功后,下次就不要拉,所以申请证书的意义不大。

Ti IPNC Web网页之ActiveX控件的更多相关文章

  1. TI IPNC Web网页之流程分析

    流程 Appro IPNC使用的web服务器是boa. 请仔细理解下面这段话. boa这个web服务器是GUI界面和IPNC应用程序之间的通信的桥梁.它的责任是从web GUI中接收HTTP请求,并且 ...

  2. TI IPNC Web网页之网页修改教程

    web网页程序修改 打开gStudio之后,点击菜单栏中Help->Contents.先把这个诡异的编程语言看一遍吧.这里搬一些东西出来. GoDB简介 从第一副图片中,我们可以看出,从源文件到 ...

  3. TI IPNC Web网页之GoDB开发环境

    介绍 下面介绍DM8127/DM385 IPNC RDK中网页制作相关的东东. 具体来说,各位获得这个RDK包时有以下文件: IPNC_RDK_DM812x_DM385_Version3.5.0.ta ...

  4. TI IPNC Web网页之进阶修改

    GoDB内嵌HTML 原始的页面里面已经有一个内嵌HTML的例子了,那就是维护支持页面.下图是稍微修改后的页面...请自行脑补. 这里使用的是上一节所说的gdo containter的方法. 打开ma ...

  5. WebView:是应用程序打开web网页的UI控件后端

    public class WebViewActivity extends Activity { private WebView webView; @Override protected void on ...

  6. WebView:是应用程序打开web网页的UI控件前台

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  7. 用C#开发ActiveX控件,并使用web调用

    入职差不多两个月了,由学生慢慢向职场人做转变,也慢慢的积累知识,不断的更新自己.最近的一个项目里边,涉及到的一些问题,因为SDK提供的只是winform才能使用了,但是有需求咱们必须得完成啊,所以涉及 ...

  8. 配置ActiveX控件在网页中下载安装

    先检查客户端浏览器是否安装了ActiveX控件,如果没有安装ActiveX,就需要先给浏览器提示下载并允许安装.否则就直接使用该ActiveX控件.我们可以使用CodeBase来满足我们的要求:下面是 ...

  9. 如何取消IE“已限制此网页运行可以访问计算机的脚本或ActiveX控件

    在本地调试html页,如果其中包含js或flash,IE经常会提示“IE已限制此网页运行可以访问计算机的脚本或ActiveX控件”.虽然IE出于安全考虑阻止本地脚本运行这个做法没错,但作为程序开发者来 ...

随机推荐

  1. RedisTemplate访问Redis数据结构

    https://www.jianshu.com/p/7bf5dc61ca06 Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字 ...

  2. SQL优化,解决系统运行效率瓶颈

    http://www.cnblogs.com/SameZhao/p/4737725.html

  3. 怎样让.bat文件直接运行不需要右键管理员权限

    :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2&g ...

  4. Oh My Zsh 插件篇 - 实用工具

    Oh My Zsh 除了为我们提供快捷的命令行操作之外,还提供了强大丰富的插件机制,每个社区贡献者都可以贡献自己的插件,让整个生态体系更加丰富完善.今天给大家介绍了一下它的实用工具类插件. 前面我们分 ...

  5. Spring Boot企业微信点餐系统

    第1章 课程介绍 包括项演示.课程概述.课程安排.学习前提等的介绍, 让同学们了解这课程 1-1 课程介绍 第2章 项目设计 包括需求分析,项?目设计,项?目架构,数据库设计等等. 2-1 项目设计 ...

  6. maven中pom.xml解释

    知识点:解释maven中,各个标签的含义 转载:http://blog.sina.com.cn/s/blog_534f69a001010lpv.html (1)Introduce maven项目的核心 ...

  7. jquery 弹窗插件 layer 常见接口

    源自:https://www.cnblogs.com/teamobaby/p/3556584.html 常见接口如下: 方法名 描述 $.layer({}) 核心接口,参数是一个对象,对象属性参见上述 ...

  8. Flume NG初次使用

    一.什么是Flume NG Flume是一个分布式.可靠.和高可用性的海量日志采集.聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据:同时Flume提供对数据的简单处理,并写到各种数 ...

  9. Deep Learning入门

    今天在看电影的过程中我忽然想起来几件特别郁闷的事,我居然忘了上周三晚上的计算机接口的实验课!然后我又想起来我又忘了上周六晚上的就业指导!然后一阵恐惧与责备瞬间涌了上来.这事要是在以前我绝对会释然的,可 ...

  10. bzoj 1270: [BeijingWc2008]雷涛的小猫 简单dp+滚动数组

    1270: [BeijingWc2008]雷涛的小猫 Time Limit: 50 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Descrip ...