我正在尝试获取c#格式的音频文件的持续时间。我让下面的代码在我的本地机器上运行,但是当我将它部署到windows server2008机器上时,对于.avi和.wav文件,它总是返回持续时间0。
WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
IWMPMedia mediaInfo = wmp.newMedia(filePath);
return mediaInfo.durationString我在服务器上安装了windows media player11。
如有任何帮助,我们将不胜感激
发布于 2009-08-20 11:25:38
我没有使用"WindowsMediaPlayerClass“的经验,但我广泛地使用过TagLibSharp,这也是我尝试使用的--它支持相当广泛的格式,这使得它的应用编程接口比.NET中的内置支持更易用
http://developer.novell.com/wiki/index.php/TagLib_Sharp
很有可能仅仅使用TagLibSharp就可以解决您的问题。
(请注意,taglibsharp是由banshee项目维护的,但由于明显的历史原因,它托管在@ novell。我不知道细节,但这可能会让联系开发人员有点混乱)
发布于 2011-10-09 00:30:52
要检索持续时间信息,必须先打开媒体文件。
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
发布于 2009-08-22 01:27:11
我的猜测是没有安装媒体播放器(它不是默认安装在服务器SKU上)。
您有没有尝试安装桌面体验包?
https://stackoverflow.com/questions/1305410
复制相似问题