Windows Media Player SDK 简介

2023-05-16

Windows Media Player SDK 简介


2002年9月
适用于:
    Microsoft® Windows Media™ Player
摘要:了解如何更改 Windows Media Player 的外观和行为,如何将其嵌入基于 Web 或基于 Windows 的应用程序,以及如何使用插件对象扩展其功能。本文介绍了 Windows Media Player 软件开发工具包 (SDK) 并描述了这些功能的用法。
从 MSDN Downloads(英文)下载 Windows Media Player 9 Series SDK。

目录

  • 简介
  • 创建 Player 应用程序
  • 创建外观
  • 创建插件
  • 更多信息

简介

Microsoft® Windows Media™ Player 为数字音频和视频提供了出色的播放效果,但您的业务可能需要显示更多信息,或者需要修改视频或音频内容的播放方式。使用 Windows Media Player 软件开发工具包 (SDK)(代号为“Corona”),您可以扩展独立 Player 的功能,并将播放功能嵌入到自己的应用程序中。本文对 SDK 进行了高级概述,涉及如下所述的三个主要功能;本文适用于决策者以及初次接触数字媒体编程的程序员。
可以将 Player 嵌入 Web 应用程序或基于 Microsoft Windows® 的应用程序中。Windows Media Player 具有模块化体系结构,使您可以只使用所需的部分。尤其是,用户界面与音频和视频内容的播放功能相互独立。您可以使用其播放功能,并可决定在应用程序中是使用 Player 的现有用户界面,还是创建自己的用户界面。
Windows Media Player 提供了外观功能,您可以使用该功能创建个性化的 Player 外观,也可以基于 Player 创建截然不同的功能。
还可以创建插件来扩展 Player 的主要功能,方法是向用户界面添加新的交互式控件,在 Player 呈现音频或视频数据前对其进行修改,然后在 Windows Media 文件中呈现非标准数据流。

本文包括以下主题:

  • 创建 Player 应用程序。介绍如何在 Web 或基于 Windows 的应用程序中嵌入 Windows Media Player 功能。
  • 创建外观。介绍外观功能:更改 Windows Media Player 的外观和行为。
  • 创建插件。介绍修改 Windows Media Player 外观和行为的插件。其中包括呈现专有内容、修改音频或视频播放以及通过交互式控件提供全新的功能。

创建 Player 应用程序

Windows Media Player 包括用于呈现视频和音频的 Microsoft ActiveX® 控件。该控件可在任何运行 Windows Media Player 的计算机上获得。Windows Media Player 是一种独立的技术,此外,它还包括一个 ActiveX 控件形式的组件对象模型 (COM) 服务器(Player 与 ActiveX 控件之间的关系相当于 Microsoft Internet Explorer 与其所提供的 WebBrowser ActiveX 控件之间的关系)。
有两种方法可用于创建使用 Windows Media Player ActiveX 控件的应用程序。您可以在 Web 应用程序中使用该控件,也可以在基于 Windows 的应用程序中使用它。
要在 Web 应用程序中使用 Windows Media Player,应在页面的超文本标记语言 (HTML) 中包含一个 OBJECT 元素。并在 OBJECT 元素中包含嵌套的 PARAM 元素,以指定 Windows Media Player ActiveX 控件是否可见、包含哪些操作按钮以及该控件的其他属性。通过包含多个 OBJECT 元素,可在一个 Web 页面中包含多个控件。要完全控制嵌入的 Player,可以在页面的 HTML 中编写脚本代码。
要在基于 Windows 的应用程序中使用 Windows Media Player,可以包含一个对服务于该控件的动态链接库 (DLL) 的引用。例如,在 Microsoft Visual Basic® 中,使用 Components(组件)对话框设置一个对“Windows Media Player”(这是 Wmp.dll 文件中库的助记名称)的引用。
如何设置控件属性取决于所用的编程环境。例如,在 Visual Basic 中,使用自定义 Properties(属性)对话框在设计时设置属性。也可以通过编写代码设置或读取属性以及在运行时调用方法。
最终用户可在任何安装了 Windows Media Player 的基于 Windows 的计算机上运行该应用程序。他们可以通过已经熟悉(或由您创建)的用户界面收听音频或观看视频。
企业程序员可以简单地使用 Player 提供的播放功能,并将精力集中在应用程序的特定业务需要上。

创建外观

您可以使用 Windows Media Player 中的外观技术更改 Player 的外观,同时保持它的标准行为。Player 包含的外观便是该功能的体现。尽管这些外观使 Player 看起来迥然不同,但它们却都保留了 Play(播放)和 Pause(暂停)按钮、显示播放列表、返回到完整模式等基本功能。
您还可以使用外观技术创建一个外观和行为与标准 Player 相差很大的应用程序。您可以随意在外观中添加各种各样的控件,使其执行自定义操作。要定义自定义操作,可以编写 JScript® 代码;您无需精通 Microsoft Visual C++® 或 Visual Basic 即可将外观技术用作编程平台。
您可以将外观定义文件、图像文件和任何 Jscript 文件压缩到文件扩展名为 .wmz 的单个文件中。这是将外观提供给最终用户的标准方法。
您还可以创建称作边框的特殊外观,它显示在完整模式下的 Windows Media Player 的 Now Playing(正在播放)功能中。您可以将边框、播放列表文件和数字媒体文件压缩到文件扩展名为 .wmd 的单个可下载文件中。当最终用户单击 .wmd 文件的链接时,Windows Media Player 将对包含的所有文件进行解压缩,将边框应用到 Now Playing(正在播放)功能,然后开始播放在播放列表文件中指定的内容。
这种可下载文件功能尤其适用于向最终用户提供出色的娱乐或教育内容。它不要求最终用户进行任何安装,同时允许您进行广泛的自定义。

创建插件

Windows Media Player SDK 包含支持广泛扩展性的接口。要扩展 Player 的基本功能,可以编写借助于 DLL 文件的 COM 对象。
SDK 包含一个可创建示例插件项目的 Visual C++ 向导。该项目包含编译和注册插件所需的代码和一个示例实现。运行向导后,您便可以将编程工作的重点放在实现插件所需的特定代码上。
利用插件提供的扩展性,您可以将 Windows Media Player 用作提供和操作数字媒体内容的平台。插件有几种不同的类型,将在以下主题中进行讨论。

可视化效果插件

当 Player 处于完整模式或外观模式(取决于外观)时,可视化效果插件可在只播放音频内容时,向 Player 的 Now Playing(正在播放)功能添加有趣的动态图像。可视化效果的外观和动态运动基于正在播放的音乐并与之同步。

将可视化效果作为 COM 对象实现。Player 每秒多次为当前选定的可视化效果引发事件。该事件包含以下数据:

  • TimedLevel 结构,其中包括当前音频的频率和音量信息
  • 设备上下文句柄,用于指定绘图面
  • RECT 结构,定义绘图面的大小
在可视化效果对象中,实现处理此事件的 Render 方法。
可以使用 Windows 图形设备接口 (GDI) 功能、Microsoft Direct3D® 或 DirectDraw® 功能等技术对图形进行可视化编程。
在调用那些利用设备上下文的 GDI 函数时,Windows Media Player 插件向导生成的示例实现使用音频和音量数据(位于 TimedLevel 结构中)。可以修改或替换该实现,以生成所需的可视化效果。
该向导可以编写用于编译自行注册的 COM DLL 的全部代码。要看到可视化效果,只需编译项目,然后运行 Windows Media Player 并选择新的可视化效果即可。

用户界面插件

Windows Media Player 为最终用户提供了各种信息和功能。但是,您可能需要提供自定义交互或自定义数据。使用用户界面插件可完成此项工作。
Windows Media Player 的完整模式由许多区域组成,如 Now Playing(正在播放)功能和播放列表窗格。某些区域在默认状态下不可见,但最终用户可将其显示为可见。这些区域包括显示在 Now Playing(正在播放)功能底部的设置区域,以及显示在播放列表上方的元数据区域。

用户界面插件分五种类型。其中三种类型显示在 Player 的不同区域中。在每个区域中,每次只能启用一个插件。

  • 显示插件。这些插件占据 Now Playing(正在播放)功能中的可视化效果显示区域。由于该区域通常很大,因此比较适合显示大量数据或复杂的交互控件集。
  • 设置插件。这些插件位于 Now Playing(正在播放)功能中可视化效果显示区域的下面。该区域包含图形均衡器、视频设置和其他用于配置播放或 Windows Media Player 外观的控件。设置插件比较适合添加相似的自定义功能,并使最终用户能够配置 Player 的外观或行为。
  • 元数据插件。这些插件位于播放列表上方的一个小区域。它们比较适合显示曲目、唱片集或播放列表的确切信息,同时也适用于简单控件或超链接。例如,Windows Media Player 包含一个元数据插件,它显示的封面图形是一个指向有关当前播放的唱片集和音乐家的更多信息的链接。

有两类用户界面插件在 Windows Media Player 窗口中不显示。

  • 窗口插件。这些插件占用一个单独的窗口。它们比较适合显示信息或向最终用户提供从 Now Playing(正在播放)功能切换到其他功能或加载其他插件时始终存在的交互操作。
  • 背景插件。这些插件没有图形界面(除非像对待任何插件那样,为它们提供属性页)。它们比较适合不要求最终用户进行输入的自动服务。
Windows Media Player 插件向导可以为每种类型的用户界面插件创建示例实现。您可以修改实现细节,以提供所需功能,编译项目,然后使用 Player 测试插件。该向导包括编译自行注册的 COM DLL 所需的所有代码,因而您可以在编码时将重点放在特殊需要上。

DSP 插件

数字信号处理 (DSP) 插件在播放过程中修改数字媒体流。使用 DSP 插件,可以将彩色视频更改为黑白视频,或使用反色使图像看起来像底片。还可在音频中添加颤音或回声效果。插件在处理数字媒体内容时将改变该内容的播放。DSP 插件与可视化效果插件不同,后者接收种子值形式的数字音频数据以生成视觉输出,但并不影响音频播放本身。
除 Windows Media Player SDK 之外,编写 DSP 插件还需要 Microsoft DirectX® SDK。这些插件有一个明显特征,即实现由 DirectX SDK 提供的 IMediaObject 接口。
当 DSP 插件安装在最终用户的计算机上并被激活时,Windows Media Player 在数据呈现之前将音频和视频数据传递给该插件。Player 分配输入缓冲区和输出缓冲区,并使插件能够对这两个缓冲区进行访问。必须实现 IMediaObject 接口的各种方法,以便从输入缓冲区读取数据,以适用于插件的任何方式对数据进行处理,然后将修改后的数据写入输出缓冲区。Windows Media Player 将呈现从输出缓冲区获取的数据。
可以运行 Windows Media Player 插件向导创建 DSP 插件的示例实现。该示例实现 IMediaObject 接口,并实现一个称为 DoProcessOutput 的实用程序函数。很多情况下,只需使用 DSP 插件的特有代码修改此实用程序,并利用向导提供的所有其他代码。

呈现插件

使用 Windows Media Format SDK,可以向 Windows Media 文件中添加任何数据流。此数据流的格式不受限制,包括 Windows Media Player 默认情况下无法识别的格式。

有两种方法可用来呈现包含此类数据流的 Windows Media 文件。

  • 可以编写一个自定义播放应用程序。这种情况下,除了包含用于呈现您的特有内容的代码之外,还必须包含用于提供标准音频、视频和脚本流的代码以及用于显示用户界面的代码。
  • 也可以为 Windows Media Player 编写一个呈现插件。这种情况下,仍须编写用于呈现您的特有内容的代码,但是可以利用 Player 的固有功能来呈现支持的流并提供最终用户已有所了解的用户界面。
Windows Media Player 插件向导可以创建用于呈现插件的示例实现。该示例可实现呈现插件所需的许多接口,还可以实现一个称为 DoRendering 的实用程序函数。只需使用用于呈现特有流的代码修改此实用程序,并利用向导提供的所有其他代码。

更多信息

有关创建 Player 应用程序、外观或插件的完整信息,可以从 Windows Media Technologies(英文)Web 页面下载 Windows Media Player SDK。

法律声明

本软件的部分内容基于 Independent JPEG Group 的工作。
GIF 解压缩代码 1990,David Koblas 版权所有。如果在所有副本中均包含上述版权声明,并在支持文档中同时包含该版权声明和本许可声明,则允许出于任何目的免费使用、复制、修改和发布本软件及其文档。本软件“依样”提供,不包含任何明示或暗示的担保。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows Media Player SDK 简介 的相关文章

  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • 主目录 不允许下载媒体

    尝试将 PDF 文件保存在下载目录中 但之后getExternalStoragePublicDirectory在 Android Q 后完全弃用 无法将文件保存在 DCIM 或 Pictures 文件夹之外的任何其他位置 因为尝试在此处保存
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • Windows 睡眠功能极慢

    我正在通过 Windows h 使用 Sleep 命令制作一个程序 并且在 Windows 10 而不是 Windows 7 上运行我的程序时遇到了令人沮丧的差异 我将我的程序简化为下面的程序 它与我的更复杂的程序表现出相同的行为 在 Wi
  • 开发者可以在 Windows 应用程序中使用 iCloud 吗?

    开发人员可以使用 Apple 的 iCloud API 在 Mac OS X 和 iOS 上的不同版本的应用程序之间同步应用程序数据 如果开发人员拥有 Windows 版本的应用程序 该版本是否也可以使用 iCloud 将应用程序数据与 M
  • 将文件夹中的所有文件及其所有子文件夹移动到一个大文件夹中 - windows xp

    我有一个文件夹 c downloads ffme 里面有很多子文件夹 每个子文件夹中都有不同数量的文件 我想将所有这些单独的文件合并到一个大文件夹中 同时将它们从子文件夹中删除 我希望最终得到一个包含大量文件的文件夹 但没有子文件夹 我怎样
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • 无法加载 JNI 共享库 (JDK)

    当我尝试打开时Eclipse http www eclipse org 弹出对话框指出 无法加载 JNI 共享库 C JDK bin client jvm dll 此后 Eclipse 强制关闭 我想提出以下几点 我检查了这条路径上是否存在
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • Windows批处理文件:将结构转换为单行字符串

    我需要将这个艰巨的任务作为批处理文件来完成 这对于 C 来说不是最困难的 但在 DOS 中是一个地狱 至少对我来说 我需要将结构转换为单个 var 字符串 才能在我的程序中再次将它们转换为该结构 别担心回归 一切都已经完成了 该结构的大小会
  • conio.h 不包含 textcolor()?

    我一直在考虑在我用 C 编写的 DOS 程序中使用颜色 有人告诉我conio h有textcolor 函数 但是当我在代码中使用它时 编译器 链接器会向我抛出错误 说我对该函数有未定义的引用 Does conio h真的有这个功能还是有人告
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • 如何在Windows服务器上将node.js文件作为后台进程运行?

    我正在创建一个 node js 项目并将其上传到我的 Windows 服务器 以为移动应用程序提供 API 服务 当我打开命令提示符并键入 node app js 它运行正常 但是当我关闭命令提示符时 我的 Node js 服务器停止运行
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt

随机推荐

  • 体验华为操作系统 openEuler 20.03 LTS linux

    安装华为linux openEuler 20 03 LTS 一直在用centos xff0c 但redhat马上不再对其支持更新了 xff0c 刚好华为发行了社区版linux xff08 ps 难道是centos倒下 xff0c 华为ope
  • c++实现的阻塞队列

    阻塞队列 block queue 什么是阻塞队列 xff1a 在多线程编程时当有多个线程访问一个队列时如果队列为空 xff0c 则获取队列中元素的方法就会阻塞 xff0c 直到队列中有元素可以获取 解决的问题 xff1a 队列的线程安全问题
  • kafka生产者客户端架构和处理流程

    Kafka生产者客户端整体架构如图 xff1a 整个生产者客户端主要有两个线程 xff0c 主线程以及Sender线程 Producer在主线程中产生消息 xff0c 然后通过拦截器 xff0c 序列化器 xff0c 分区器之后缓存到消息累
  • 19、常用类——Collections 类

    Collections 类 Collections 则是集合类的一个工具类 帮助类 xff0c 其中提供了一系列静态方法 xff0c 用于对集合中元素进行排序 搜索以及线程安全等各种操作 常用方法 public static lt T ex
  • 【时间规划】C/C++发展之路--读书

    0 xff1a 图书馆的N本C xff0c C 43 43 书 1 xff1a C语言深度解剖 2 xff1a 高质量C 43 43 c编程指南 3 xff1a C 43 43 primer第四版 4 xff1a Windows程序设计 5
  • SpringSecurity(十七)------CSRF

    一 引入 从刚开始学习Spring Security时 xff0c 在配置类中一直存在这样一行代码 xff1a http csrf disable 如果没有这行代码导致用户无法被认证 这行代码的含义是 xff1a 关闭csrf防护 二 什么
  • Android Native Leak分析

    Native Heap 为 Android C 43 43 层 xff08 也为so库 xff09 所分配的内存 问题描述解决方式数据分析 问题解决方法获取数据方法脚本 python3解析结果 出现问题技巧 问题描述 使用dumspsys
  • CentOS 7安装Python 3.6,pip3报错问题

    在CentOS 7上安装Python3 6 3后 xff0c 在使用pip命令时报如下错误 Traceback most recent call last File 34 usr Python3 6 3 lib python3 6 site
  • SpringCloud调用接口流程

    Spring Cloud调用接口过程 Spring Cloud 在接口调用上 xff0c 大致会经过如下几个组件配合 xff1a Feign gt Hystrix gt Ribbon gt Http Client xff08 apache
  • seata的部署和集成

    一 部署Seata的tc server 1 下载 首先我们要下载seata server包 xff0c 地址在http seata io zh cn blog download html 当然 xff0c 课前资料也准备好了 xff1a 2
  • 强化学习:Q-learning与DQN(Deep Q Network)

    文章目录 Q learning一些名词epsilon greedy算法流程 DQN记忆库 Experience replay 固定Q 目标 Fixed Q target 算法流程 Q learning是一种很常用很传统的强化学习方法 xff
  • 解决windows FTP共享、局域网共享文件等解决方案。

    nbsp nbsp nbsp 最近单位在局域网共享了一个电脑 有自己的IP地址 直接在运行输入 192 168 nbsp 按理说就能访问 nbsp nbsp nbsp 但是别人的机器都可以 只有我的不行 研究了半天终于找到原因 这个原因还真
  • mariaDB安装与配置

    cd到 etc yum repos d 目录下 xff0c 使用touch MariaDB repo创建MariaDB repoMariaDB repo文件 vim MariaDB repo 进入配置文件 在官网找到配置信息 选择阿里云镜像
  • archlinux安装

    转载地址 https wiki archlinux org index php Beginners 27 Guide 28 E7 AE 80 E4 BD 93 E4 B8 AD E6 96 87 29 欢迎 xff0c 本文档将指导您安装
  • 2030年的人工智能与生活(AI and Life in 2030)

    作者 xff1a Anqi 链接 xff1a https zhuanlan zhihu com p 22308870 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 第一部分 xff1
  • 如何将origin pro的界面切换变成中文显示?

    origin其实自带中文界面 xff0c 很多朋友反馈不知道如何设置 xff0c 软件里面也没看到有改变语言的选项 xff0c 它设置需要更改注册表 xff0c 相对复杂一点 那么今天就手把手的教大家如何将origin的语言改为中文吧 wi
  • Java高并发秒杀平台(Redis + RabbitMQ)

    Seconds Kill 本项目是一个模拟高并发环境下基于 SpringBoot 的秒杀购物平台 为了减少对数据库的直接访问 xff0c 通过 Redis 实现了缓存优化 xff1b 并通过 RabbitMQ 消息中间件来接收大量的并发请求
  • Ubuntu 配置

    配置源 如果是网通或者教育网建议选择上海交大的源 sudo cp etc apt sources list etc apt sources list backup sudo gedit etc apt sources list 用以下内容替
  • vncserver: Failed command ‘/etc/X11/Xvnc-session‘: 256!

    安装vncserver启动时出现如下报错 xff1a Starting applications specified span class token keyword in span etc X11 Xvnc session Log spa
  • Windows Media Player SDK 简介

    Windows Media Player SDK 简介 2002年9月 适用于 xff1a Microsoft Windows Media Player 摘要 xff1a 了解如何更改 Windows Media Player 的外观和行为