『VLC』vlc-plugin的使用与代码套用

1. 安装与使用可参考:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
        <title>VLC Embedd test</title>
</head>
<body>
<object 
  classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" 
    codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab" 
    <!--width="854"
    height="480"-->
    width="320"
    height="180"
    id="vlc">
    <param name="ShowDisplay" value="True" />
    <!--<param name="src" value="http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi" />-->
    <param name="src" value="test.mov" />
    <param name="Toolbar" value="True" />
    <param name="Autoloop" value="False" />
    <param name="Autoplay" value="True" />
    <param name="Mute" value="False" />
</object>   
</body>
</html>

2. 在2.0.0后vlc源码结构中的projects『建立在 libvlc上的项目,如Mozilla插件,ActiveX 插件』被缩减了,此前的代码可以在这里取:http://download.videolan.org/videolan/vlc/


3. TODO:嵌入网页,preview视频设备,并做些修改。


4. 待补。。。

个别与控件相关的文件:axvlc.def

LIBRARY AXVLC.DLL
EXPORTS
    DllMain = DllMain@12
    DllCanUnloadNow = DllCanUnloadNow@0
    DllGetClassObject = DllGetClassObject@12
    DllRegisterServer = DllRegisterServer@0
    DllUnregisterServer = DllUnregisterServer@0

axvlc.idl interface desc language(接口描述语言)

 
 

axvlc_idl.c / axvlc_idl.h,能组件接口相关的定义

简单回忆一下COM组件的运作,【客户程序】【COM库:在注册表找到DLL】【组件程序:COM对象,类厂】:客户程序调用CoCreateInstance,间接调用CoGetClassObject函数;COM库找到并加载对应DLL;调用DLLGetClassObject;DLLGetClassObject函数创建类厂,并吧接口指针返回给CoGetClassObject,返回到CoCreateObject;CoCreateInstance拿到类厂后,便可以创建COM对象,类厂创建COM对象,最终返回给客户,直接调用。

对于网页与ActiveX控件的交互

<param name="Autoplay" value="True" />
属性包 IPersistPropertyBag 接口的实现方法和调用方式。

嵌入IE中得ActiveX控件,由IE创建。IE通过shdocvw.dll 对ActiveX控件进行查找名称为InitPropertyBag 或 InitStream 的 Instance 的一个子项。若找到,它将根据注册表项的内容创建一个 IPropertyBag 或 IStream(相应地),并将其传递给IPersistPropertyBag::Load 或 IPersistStream::Load 方法(相应地)。 
这样ActiveX的控件很容易地自然地实现了和网页的序列化交互。
也正是由于IE和COleControl对对该接口的默认支持,因此在创建ActiveX控件的时候,程序员很容易的就可以解决属性在网页上的存储问题。













 
 

你可能感兴趣的:(VLC)