文章目录
- 1、简介
- 1.1 WMP控件特点
- 1.2 WMP开发接口
- 1.3 WMP开发方式
- 1.4 WMP支持格式
- 2、官网代码示例
- 2.1 Using the Windows Media Player Control in a Console Application
- 2.2 Hosting the Windows Media Player Control in a Windows Application
- 3、C++测试代码
- 4、IE测试代码
- 5、C#测试代码
- 结语
无为也,则用天下而有余;有为也,则为天下用而不足。
1、简介
https://docs.microsoft.com/en-us/windows/win32/wmp/about-the-windows-media-player-sdk
Microsoft Windows Media Player 软件开发工具包 (SDK) 提供了用于自定义 Windows Media Player 和 Windows Media Player Mobile 以及使用 Windows Media Player ActiveX 控件和 Windows Media Player Mobile ActiveX 控件的信息和工具。
1.1 WMP控件特点
多种技术都支持嵌入 Windows Media Player 控件,包括:
- Web 浏览器中的 HTML。支持 Microsoft Internet Explorer、Firefox 和 Netscape Navigator 7.1 版浏览器。
- 使用Microsoft Visual C++ ®开发系统创建的程序。
- 使用Microsoft Visual Basic® 6.0创建的程序。
- 使用 .NET Framework 创建的程序,包括用 Visual Basic 和 C# 编程语言编写的程序。
- 微软办公软件。
1.2 WMP开发接口
Microsoft Windows Media Player 控件是使用 Microsoft Component Object Model (COM) 技术的标准 ActiveX 控件。Windows Media Player 功能被提炼为一组遵循标准 COM 准则的编程接口。您可以使用带有 Microsoft JScript 或 Microsoft Visual Basic Scripting Edition (VBScript) 的 Player 控件对象模型,在标准 HTML 网页上对这些接口进行编程。您还可以使用Microsoft JScript在皮肤中对它们进行编程。如果要创建嵌入控件的自定义程序,可以使用多种语言之一,包括 Visual Basic、C++ 和 C#。
脚本语言的播放器对象模型:
ActiveX 使用对象的概念来包含编程功能。Windows Media Player 使用多个对象来划分控件提供的功能。根对象是 Player 对象,其他对象通过特定属性附加到 Player 对象。
下图显示了 Windows Media Player 11 ActiveX 控件对象模型如何用于脚本语言。
在C++中,有时在 .NET 语言中,对象由 COM 接口表示。在 Windows Media Player 对象模型中,COM 接口名称与对象名称相同,但以“IWMP”为前缀。例如,网络对象通过 IWMPNetwork 接口公开。
1.3 WMP开发方式
(1)导入ActiveX控件,拖放ActiveX控件方式
- 工具箱添加ActiveX控件,菜单“工具” -> “选择工具箱项”
- 选择“COM组件”,在你想要选择的控件上面打钩
- 工具箱最下面就多了对应ActiveX控件
- 拖到界面即可使用
(2)动态创建ActiveX控件
- 类向导,快捷键 Ctrl + Shitf + X
- 右边“添加类”,“ActiveX中的MFC控件类”,生成ActiveX控件类
- 在框架或者对话框的初始函数中,调用类的Create函数
(3)COM调用方式
- 类向导,快捷键 Ctrl + Shitf + X
- 右边“添加类”,“类型库中的MFC类”,生成继承COleDispatchDriver的类
- 在框架或者对话框的初始函数中,调用类的CreateDispatch函数
1.4 WMP支持格式
本文列出 Microsoft Windows Media Player 12 支持的多媒体文件类型。 如果在 Windows 中安装新的编解码器,则可能支持其他文件格式。
Windows Media Player 支持的文件类型:
- Windows Media 格式(.asf、.wma、.wmv、.wm)
- Windows Media 元文件(.asx、.wax、.wvx、.wmx、wpl)
- Microsoft 数字视频记录 (.dvr-ms)
- Windows Media 下载程序包 (.wmd)
- 影音交叉存取 (.avi)
- 运动图像专家组(.mpg、.mpeg、.m1v、.mp2、.mp3、.mpa、.mpe、.m3u)
- 音乐器材数字接口(.mid、.midi、.rmi)
- 音频交换文件格式(.aif、.aifc、.aiff)
- Sun Microsystems 和 NeXT(.au、.snd)
- Audio for Windows (.wav)
- CD 音频曲目 (.cda)
- Indeo 视频技术 (.ivf)
- Windows Media Player 外观(.wmz、.wms)
- QuickTime 影片 (.mov)
- MP4 音频文件 (.m4a)
- MP4 视频文件(.mp4、.m4v、.mp4v、.3g2、.3gp2、.3gp、.3gpp)
- Windows 音频文件(.aac、.adt、.adts)
- MPEG-2 TS 视频文件 (.m2ts)
- 免费无损音频编解码器 (.flac)
2、官网代码示例
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/api/wmp/nn-wmp-iwmpplayer4
2.1 Using the Windows Media Player Control in a Console Application
2.2 Hosting the Windows Media Player Control in a Windows Application
To use the Windows Media Player ActiveX control (including the user interface) in a Windows-based program, you must provide an ActiveX control container. ATL provides the CAxWindow class to provide ActiveX host window functionality.
- CWMPHost.h:
- CWMPHost.cpp:
3、C++测试代码
在基于对话框的MFC应用程序中嵌入了Windows Media Player窗口媒体播放器Activex控件。
- 新建一个基于MFC对话框工程
- 添加ActiveX控件
鼠标右键弹出菜单,选择“插入ActiveX控件” - 显示ActvieX控件列表窗口如下:
- 控件被添加到MFC窗口上。
- 鼠标右键,添加控件变量。自动生成类文件COCX.h,COCX.cpp。
- 鼠标右键,选择“类向导”,添加wmp的核心播放类。
- 从wmp.dll来生成类代码文件。
- 自动生成类文件CWMPPlayer4.h,CWMPPlayer4.cpp。
将COCX m_player; 改成 CWMPPlayer4 m_player; - 然后换一种方式,通过“类型库种的MFC类”,添加其他的wmp封装类。比如controls、settings、playlist等。
- 这里添加其他5个wmp辅助封装类,如下:
- 最后,VS代码工程的文件组织结构如下:
- (1)定义变量
- (2)播放视频文件
上面的步骤操作不正确的话,会出现如下的提示框。
4、IE测试代码
5、C#测试代码
“工具箱”中单击右键,选择“选择项”菜单,打开“选择工具箱项”窗口,选择“COM组件”标签,在列表中找到并勾选“Windows Media Player”组件,单击“确定”按钮。将该组件添加到指定的工具箱选项卡中。
- 添加wmp的com控件引用
- 窗口上添加控件
- 添加逻辑代码
- 测试如下:
最后祝小伙伴们中秋快乐!
🎈🎈🎈🥗🍩😁🎂🥝🎈🎈🎈
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞 ;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!