练习播放器
功能说明:该程序是一个基于易语言开发的优酷视频播放组件封装及演示示例。程序的核心目的是通过调用 Windows API 和 ActiveX 控件,在易语言编写的软件界面中嵌入优酷 Flash 播放器,从而实现视频的直接播放功能。程序主要由一个自定义类模块和一个主窗口程序集组成,展示了如何手动宿主 ActiveX 控件并控制其播放行为。
主要功能模块分析如下:
1. 优酷播放器类封装(优酷播放器类):
这是程序的核心逻辑部分,定义了一个名为“优酷播放器类”的自定义类,用于封装视频播放器的创建和控制逻辑。
- 生命周期管理:包含 `_初始化` 和 `_销毁` 子程序,分别在对象创建和销毁时自动调用,负责初始化 ActiveX 环境(AtlAxWinInit)及清理资源。
- 初始化方法:公开的 `初始化` 子程序接收父窗口句柄、位置及尺寸参数。它通过调用 Windows API `CreateWindowExA` 创建一个类名为"AtlAxWin"的窗口,该窗口作为 ActiveX 控件的容器。随后通过 `AtlAxGetControl` 获取内部的 Flash 对象句柄,并设置允许全屏、允许脚本访问等属性。特别地,代码通过写入 `flashvars` 属性,配置了 `showAd=0`(不显示广告)、`isShowRelatedVideo=false`(不显示相关视频)等参数,以实现纯净的播放体验。
- 播放控制:提供了 `打开` 和 `播放` 子程序(部分代码版本中将两者合并)。`打开` 用于设置播放器的 SWF 文件地址(movie 属性),`播放` 用于设置具体的视频 ID(VideoIDS 参数)。这使得程序可以灵活加载不同的优酷视频内容。
- 窗口管理:`移动` 子程序调用 `MoveWindow` API,用于在父窗口大小改变时,同步调整播放器控件的大小和位置,确保界面布局正常。
2. 主窗口逻辑(窗口程序集 1):
这是程序的入口和演示部分。
- 启动初始化:在 `__启动窗口_创建完毕` 事件中,程序实例化了“优酷播放器类”。它调用 `初始化` 方法将播放器嵌入当前启动窗口,加载指定的优酷播放器 SWF 地址(http://static.youku.com/v1.0.0133/v/swf/qplayer.swf),并指令播放特定的视频 ID(示例中为"XMTk5Mjg3ODcy",对应标题“危情 24 小时”)。
- 响应式布局:在 `__启动窗口_尺寸被改变` 事件中,程序调用播放器类的 `移动` 方法,使播放器窗口始终填充整个用户区,适应窗口大小的变化。
3. 底层 API 依赖:
程序依赖多个外部 DLL 命令来实现底层功能,主要包括:
- atl.dll:提供 `AtlAxWinInit` 和 `AtlAxGetControl`,用于初始化和获取 ActiveX 控件对象,这是嵌入 Flash 播放器的关键技术。
- user32.dll:提供 `CreateWindowExA` 用于创建底层窗口容器,`ShowWindowAsync` 用于异步显示窗口,`MoveWindow` 用于移动和调整窗口大小。
总结:
这是一个典型的易语言 ActiveX 宿主程序。它不直接使用易语言自带的播放器组件,而是通过底层 API 手动创建 ActiveX 容器来加载第三方 Flash 播放器。这种方式的优点是可以更精细地控制播放器的参数(如去广告、隐藏推荐等),适用于需要在桌面软件中集成在线视频播放功能且对播放界面有定制需求的场景。代码结构清晰,分为类封装与界面调用两部分,具有良好的复用性。
======优酷播放器类
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 初始化
| |
| |------ 打开
| |
| |------ 播放
| |
| |------ 移动
| |
| |
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ __启动窗口_尺寸被改变
| |
| |
======调用的Dll
| |
| |---[dll]------ AtlAxWinInit
| |
| |---[dll]------ AtlAxGetControl
| |
| |---[dll]------ 创建窗口
| |
| |---[dll]------ 异步显示窗口
| |
| |---[dll]------ MoveWindow
======优酷播放器类
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 初始化
| |
| |------ 播放
| |
| |------ 移动
| |
| |
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ __启动窗口_尺寸被改变
| |
| |
======调用的Dll
| |
| |---[dll]------ AtlAxWinInit
| |
| |---[dll]------ AtlAxGetControl
| |
| |---[dll]------ 创建窗口
| |
| |---[dll]------ 异步显示窗口
| |
| |---[dll]------ MoveWindow
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。