问题标签 [windows-media-player]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3923 浏览

c# - 如何在 C# 中与 Windows Media Player 交互

我需要将 Windows Media Player 与我的应用程序同步。我想在 ListBox 中实时显示 WMP 正在播放的当前歌曲,并在 WMP 更改歌曲时进行更新。我该如何实施?

0 投票
1 回答
2037 浏览

java - 以编程方式控制 Windows Media Player,最好使用 Java

我正在向已经广泛部署的现有 Java 应用程序添加功能。(因此,除非我有非常令人信服的理由,否则我无法触及一些设计决策。)该应用程序控制一台 PC,向小型本地电视网络广播音频和视频。目前,它主要播放静态幻灯片,但也可以根据客户的意愿播放背景音乐。背景音乐(CD、本地音乐文件、互联网广播等)由 Windows Media Player 处理。

我目前的项目是为静态幻灯片添加旁白。当旁白播放时,我需要发送某种 STFU 信号来暂时静音或静音 WMP 输出。所以我的核心问题是:实现这一目标的最佳方法是什么?

我知道 WMP 有一个 ActiveX 接口,但我没有使用 ActiveX/COM 的经验。当然,我可以(并且可能会)学习,但在这一点上,我还不能很好地区分简单的解决方案、技术上可行但痛苦的解决方案,以及实际上是死胡同的“解决方案”。

基于 Java 的解决方案是否需要我像 Jacob 一样使用 Java->ActiveX 桥接器?还是那是矫枉过正?

或者,我是不是完全找错了树?我当然愿意部署完全用另一种语言编写的小型命令行可执行文件,然后通过 Runtime.exec() 访问它们。这是(比如说)VisualBasic 让污垢变得简单的那种东西吗?(VB 也不在我的技能范围内,但如果它是适合这项工作的工具,我会学习。我只是不知道它是否是正确的工具。谷歌给了我很多将 WMP 整合到 VB GUI 中的例子; VB 命令行脚本,没那么多。)

最后,最后一点:WMP 实例将由用户启动,而不是由 Java 应用程序启动。不知道这是否有区别,但认为值得一提。

我提前感谢任何人可以提供给我的任何见解。

0 投票
2 回答
2470 浏览

activex - Windows Media Player 忽略我

我是前阵子来这里询问通过 Java 控制 Windows Media Player 的人。 我已经取得了进展,但我遇到了一个令人烦恼的问题,所以我回来寻求帮助。

我按照上次得到的建议安装了 Jacob。我从测试脚本中执行这些行:

...然后 WMP 弹出,播放 SomaFM。“哇!” 我认为。“我已经解决了这个问题!”

除了当我在创建该对象后与它进行交互时,它似乎与播放的 WMP 实例没有任何关系。当我执行此代码时:

...我得到以下输出:

这似乎无伤大雅,除了

  1. “50”的音量与实际设置的播放器音量无关,
  2. 在 setProperty 调用之后,播放器的音量实际上并没有改变。

我也尝试过其他属性,但都是一样的:属性的值似乎与玩家实际在做什么无关,而更改它们似乎会改变被操纵对象的状态,它对实际播放器没有影响。 (每次运行脚本时我都会得到完全相同的输出,所以无论我在旋转“音量”时更改的是什么,它在代码之外都没有任何持久性。)

显然我做错了什么,但我盲目地摸索着想弄清楚是什么。任何人都可以向我提供任何关于出了什么问题的见解,或者我接下来应该尝试什么?

(注意:我什至不确定“WMPlayer.OCX”是正确的输入参数。我在注册表中的 HKEY_CLASSES_ROOT 中尝试了看起来很可能的条目,直到找到这个。)

我提前感谢任何人可以提供的任何帮助。


编辑,2009 年 4 月 15 日: 我在一家名为 EZ JCom 的公司的产品中发现了一个特定于 WMP 的软件包。它的失败方式与我之前看到的完全相同,要么它只是 Jacob 的包装器,要么 WMP ActiveX/COM 接口完全损坏。(等等,我为什么说“要么”?)

我与客户服务聊天,他们最终展示了您如何在没有实际用处的情况下提供帮助。他们帮助我更正了他们提供的非编译示例代码,作为他们的 WMP 代码运行示例,但是当我纠缠他们以了解 get/set volume 方法应该如何工作时,我得到了这个:

“抱歉,这里没有 WMP 深入的专业知识 - EZ JCom 只是 Java 和 WMP 等其他程序之间的桥梁建设者。”

请记住,我正在评估的他们的软件包实际上称为“wmp.WindowsMediaPlayer”。如果我让它发挥作用,我将不得不说服我的老板花 600 美元购买许可证。有人想知道如果他们真的对自己的产品有一些专业知识,他们会收取什么费用。

所以,没有真正的进展。只是想我会分享。


编辑,2009 年 4 月 20 日: 是的,我还在纠结这个。我目前的操作理论是,为了获得音量设置,我需要远程访问 WMP。我见过提到 IWMPRemoteMediaServices 和 IServiceProvider 接口,后者的 QueryService 方法提供了指向前者的指针。不幸的是,我没有任何运气弄清楚如何获得 IServiceProvider。我已经看到提到它可以从 Windows“系统”对象访问,但我不知道如何获取该对象。(而且由于“系统”这个词在 Java 中占有很大比重,谷歌给了我一个可怕的噪音:信号比。)如果有人对我如何处理表示 System.dll 的 COM 对象有任何建议,我很乐意听到。


编辑,2009 年 4 月 21 日: 澄清:这是在 XP 系统上。

另外:我的研究表明仅与 WMP 对象交谈是不够的;你需要把它包得更紧,这样它才能回话。有一个包含很多 C++ 内容的 WMP SDK,但它似乎依赖于 Microsoft Visual C++ 对我没有的代码的扩展,而且它们并不是免费赠送的。(此外,我已经有 12 年没有使用过 C++了。)我知道使用 C# 是可能的,但是如果我不使用 Java,我需要解决方案是一个独立的可执行文件,并且没有安装 .NET相关机器。


编辑,2009 年 4 月 22 日: 根据 Mark 在下面的回答,我从 WinUser.h 中挖掘了 APPCOMMAND_MEDIA_* 常量并尝试了以下代码,该代码使用了NativeCall api:

这给了我一个结果:

...但实际上并不影响媒体播放器。

我也用 APPCOMMAND_MEDIA_PLAY_PAUSE (14) 进行了尝试,它给出了不同的返回值 (20),但也没有做任何事情。

FWIW,我真的需要让单独的 PLAY/PAUSE 命令来工作,这是一个可行的选择;只是盲目地切换状态对我没有帮助,因为我不知道当我开始时玩家处于什么状态。

有没有人对我做错了什么或我可以尝试什么有任何建议?

0 投票
1 回答
209 浏览

xml - 播放列表中的 1 个文件后,Windows 媒体服务器不会停止

我正在播放由如下所示的 ASX 元文件触发的 Windows Media 音频:

正如您可能知道的那样,如果可以,它应该尝试在 media1.company.com 上播放文件,如果第一个失败,则尝试在 media2.company.com 上播放文件,如果两者都失败,则播放道歉。

实际发生的是,你听到所有三个。故障转移过程似乎失败了,服务器不知道第一个文件已成功播放。

可以做些什么来解决这个问题?是服务器设置吗?XML 格式有问题吗?

0 投票
2 回答
1483 浏览

windows-media-player - 暂停/播放 Windows Media Player 的最简单、最快捷的方法是什么?

我只是想找到一种快速远程播放和暂停 Windows Media Player 的方法。在阅读了关于 SO 的几个问题后,我意识到大多数人都在谈论 C#、Java、COM、ActiveX ......这对我的项目来说似乎有点矫枉过正。有没有简单的界面来搞乱WMP?我首选的方法是一些 Python 模块,我可以在其中快速编写脚本并在五分钟内完成部署。没什么太花哨的。

0 投票
1 回答
628 浏览

javascript - addEventListener & wmp 没有按预期工作

我有一个 WMP 播放器对象,我正在尝试添加一个事件侦听器来拦截发送到播放器的 ScriptCommands。不是附加到 WMP 对象,而是立即调用我的回调,然后不拦截 ScriptCommands。

当我运行它时,我在初始化警报之前收到脚本警报......有谁知道为什么会发生这种情况?

0 投票
1 回答
10608 浏览

video-streaming - 来自 IP 摄像机的实时视频流

我有大约 10 台博世 IP 摄像机。我需要允许用户从选定的摄像机看到实时(大约 10 fps)视图。用户将位于本地网络中。直接连接到相机不是一种选择,因为大约 100 位用户可能会观看来自一台相机的图像。

我想出了这个解决方案:

  • 使用 TVideoGrabber 连接摄像机(它支持从博世 IP 摄像机获取图像)。
  • 在 Windows Server 2008 上设置 Windows Media 服务(Windows Media 服务启动
  • 将 TVideoGrabber 配置为流式传输到 WMS(它支持它)。
  • 配置 Widnows 媒体服务器以通过多播服务共享图像。
  • 用户将拥有一个包含所有摄像机的播放列表,并且能够通过 Windows Media Player 进行连接。

架构没问题,但是我想知道有没有更简单的方法呢?Maybye 通过使用一些 Macromedia 工具/Quicktime 来分享视频?

0 投票
1 回答
2462 浏览

wpf - 从 WPF MediaElement 控件捕获 MediaPlayer 异常

我正在 WPF 的 MediaElement 中播放视频。

它一遍又一遍地工作了 1000 次。

一旦在一个蓝色的月亮(比如每周一次),我得到了一个窗口异常(你知道对话 Dr. Watson Crash 吗??)发生了。MediaElment 不会暴露错误,它只是崩溃并在屏幕上显示丑陋的崩溃报告。

如果您“查看此报告”,您可以看到实际上是 MediaPlayer 崩溃了。我知道我可以禁止弹出崩溃报告 - 但我更感兴趣的是找出问题所在。

我不确定如何捕获 Dr. Watson 捕获的结果,但如果有人对更好的捕获方式提出建议,我现在打开对话框。这是数据的开头行,指向我的应用程序,然后指向 wmvdecod.dll

AppName:ScottApp.exe AppVer:2.2009.2291.805 AppStamp:4a36c812 ModName:wmvdecod.dll ModVer:11.0.5721.5145 ModStamp:453711a3 fDebug:0偏移量:000cbc88

并来自 Win 事件日志。(相同信息)

事件类型:错误事件源:.NET 运行时 2.0 错误报告事件类别:无事件 ID:1000 日期:2009 年 7 月 13 日时间:上午 10:20:27 用户:不适用计算机:28022 描述:应用程序 ScottApp 出错。 exe,版本 2.2009.2291.805,标记 4a36c812,故障模块 wmvdecod.dll,版本 11.0.5721.5145,标记 453711a3,调试?0,故障地址0x000cbc88。

0 投票
2 回答
2691 浏览

c# - 使用 windows 媒体播放器 SDK 在特定位置停止视频

有没有办法使用 Windows Media Player SDK 在特定位置停止视频?我正在使用 C# 嵌入播放器并尝试查看 IWMPControls3 接口在位置或时间方面是否在特定点具有任何停止功能。如果可以做到,那该怎么做呢?

0 投票
2 回答
4897 浏览

c# - 获取当前在 Windows Media Player 中播放的歌曲

使用 C# 如何获取当前在 Windows Media Player 中播放的歌曲名称、艺术家等?MSN Messenger / Google Talk 等应用程序可以做到这一点。谢谢