获取音频文件的持续时间C#

时间:2009-08-20 11:01:53

标签: c# audio windows-media-player

我正在尝试用c#获取音频文件的持续时间。 我在本地计算机上运行了以下代码,但是当我将其部署到Windows Server 2008时,它总是为.avi和.wav文件返回0的持续时间。

WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
    IWMPMedia mediaInfo = wmp.newMedia(filePath);
    return mediaInfo.durationString

我在服务器上安装了Windows Media Player 11。

非常感谢任何帮助

3 个答案:

答案 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)。

您是否尝试安装桌面体验包?