我正在尝试用c#获取音频文件的持续时间。 我在本地计算机上运行了以下代码,但是当我将其部署到Windows Server 2008时,它总是为.avi和.wav文件返回0的持续时间。
WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
IWMPMedia mediaInfo = wmp.newMedia(filePath);
return mediaInfo.durationString
我在服务器上安装了Windows Media Player 11。
非常感谢任何帮助
答案 0 :(得分:2)
我没有“WindowsMediaPlayerClass”的经验,但是我已经广泛使用了TagLibSharp,这是我尝试用于这些事情的东西 - 它支持相当广泛的格式,并且使得它的API更加可用。 .NET内置支持
http://developer.novell.com/wiki/index.php/TagLib_Sharp
很可能只需使用TagLibSharp即可解决您的问题。
(请注意,taglibsharp由banshee项目维护,但由于历史原因而被托管@novell。我不知道详细信息,但这可能会使开发人员有点混乱)
答案 1 :(得分:2)
要检索持续时间信息,必须先打开媒体文件。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd564790(v=vs.85).aspx#Y656
要检索不在用户库中的文件的持续时间,您必须等待Windows Media Player打开该文件;也就是说,当前 OpenState 必须等于 MediaOpen 。您可以通过处理 AxWindowsMediaPlayer._WMPOCXEvents_OpenStateChange 事件或定期检查 AxWindowsMediaPlayer.openState 的值来验证这一点。
该链接还包含C#的示例代码。
如果您不喜欢播放视频,可以使用IWMPMedia课程:
http://johndyer.name/post/Retreiving-the-duration-of-a-WMV-in-C.aspx
答案 2 :(得分:1)
我的猜测是没有安装媒体播放器(默认情况下不是服务器SKU)。
您是否尝试安装桌面体验包?