C++与FLASH交互及视频帧保存方案

 一:如何建立 c++ 与 Flash 之间通信?还有其他的实现方式嘛? 
 http://www.codeproject.com/KB/cpp/EnhancedFlashControl.aspx
 [JAVA Script 与 SWFObject 通信]
 http://blog.deconcept.com/swfobject/
 
 [Transparent Flash Control in Plain C++]
 http://www.codeguru.com/cpp/g-m/multimedia/graphics/article.php/c12229/Transparent-Flash-Control-in-Plain-C.htm

针对这个例子比较怪异的现象:

如果使用adobe flash player 10版本的话,那么运行这个程序会出现如图所示错误
 

且调试的时候进入Draw查看变量十分诡异,进入Draw函数查看原来初始化的变量值全是错乱的值,就连与进入

Create函数中的this值也不一样了。但是如果你安装了flash player 8版本后,一切又都OK了,搞了我两天,郁闷啊!

 

注意:

之前安装了flash player 10版本,后想安装flash player 8版本,在安装flash player 8版本之前,需要在安装文件路径

C:\WINDOWS\system32\Macromed\Flash下,运行FlashUtil**Plugin.exe之类的东东,进行卸载否则直接安装fla

sh player 8版本的话会出现类似于

        Error 1904 .Module
        c:\windows\system32\Macromed\Flash\Flash8.ocx
        failed to register. HRESULT-2147220473. Contact
        your support personnel

错误.

对于这种错误有人这样说(http://www.itpub.net/thread-491394-1-1.html),不过我没有这样尝试,也获取我运行

FlashUtil**Plugin.exe达到了相同的目的吧.

 

诡异的问题:

这个问题也真是十分诡异,我也解析不清楚,后来,这个问题,我卸载后,并在注册表

HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\SafeVersions 删除,同时重命名

C:\WINDOWS\system32\Macromed\Flash文件夹,然后安装flash10,结果可以正常运行,

调试中不会出现上面所说的Create和Draw函数中this指针不对的情况。比较新安装的C:\WINDOWS\system32\Macromed\Flash

与之前重命名发现,原来里面多了一个Flash10_t.ocx,这个我也不知道是怎么进来的,也许是装别的弄进来的吧,也获取是我下载

的安装文件来源不是官网的原因。

 

 [C++ 与 Flash 交互]--写得很详细,很简单,实用
 http://blog.csdn.net/xoyojank/article/details/3122679 
 脏矩形优化: 如果每帧都进行整个纹理的更新, 你会发现CPU占用率相当高. 实际上ActiveX本身是有这个优化的,
 只不过我们需要自己找出这个矩形. 通过实现IOleInPlaceSiteWindowless::InvalidateRect可以得到相应的"脏"
 矩形区域, 然后只需要更新相应的纹理区域就可以让效率达到商用的标准.
 
 技术讨论:
 http://topic.csdn.net/u/20090403/10/DB05E942-DD89-40D9-9DCD-6D56572A39BF.html#r_56291930
 
 [参考代码]
 http://read.pudn.com/downloads137/sourcecode/windows/dotnet/584833/GameGUI/FlashPlayer.cpp__.htm

2:如何利用AS创建BUTTON等等来实现界面展示?
 http://www.adobe.com/cn/devnet/flash/quickstart/button_component_as3/ 
 首先你需要从 Components面板中将该组件的一个拷贝拖拽至你当前的 Flash 文档库中。
 然后需要使用import语句导入fl.controls.Button类,这一步骤是必需的,组件文件不是以隐含方式导入的,
 使用addChild() 方法可以将新的实例添加至显示列表中。

3:如何获取SWF文件的帧信息?
  * 获得加载SWF的舞台大小以缩放到适合尺寸显示
  * 使加载的SWF按自己的帧频播放
 
4:BMP图片转成背景透明图片格式?
  http://topic.csdn.net/u/20090708/10/6c520cd1-d44e-4413-9f0b-3909c7ed6b80.html [用CxImage保存为png前,调用SetTransIndex(0) & SetTransColor( 背景色RGBQUAD ) 试试,但有失真]
  [PNG 结构信息]
  http://www.cnblogs.com/cymheart/archive/2005/08/20/219212.html
  [PNG官方文档]
  http://www.w3.org/TR/PNG/

  利用libpng来讲bmp图像数据转变成png图像格式
  
  bmp图像是不支持透明的,即使是32位的bmp图片也是如此,  
 
学习:
 在百度中搜索 “WTL for MFC Programmers, Part” 系列文章。
  http://www.codesky.net/article/doc/200506/2005062437347220.htm
 flash资料网站
  http://www.iteye.com/wiki/blog/606041
 开源网站:
  http://www.oschina.net
 DDB与DIB之间的区别:
   http://www.lihuasoft.net/article/show.php?id=3013
 使用hikari-library:[涉及C++与AS通信,透明图像抓取]
  http://code.google.com/p/hikari-library/wiki/CompilingFromSource
  需要下载Ogre3d SDK: http://www.ogre3d.org/download/sdk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值