【问题标题】:Getting duration of audio file C#获取音频文件C#的持续时间
【发布时间】:2009-08-20 11:01:52
【问题描述】:

我正在尝试在 c# 中获取音频文件的持续时间。 我得到以下代码可以在我的本地机器上工作,但是当我将它部署到 Windows Server 2008 机器时,它总是为 .avi 和 .wav 文件返回 0 的持续时间。

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

我在服务器上安装了 windows media player 11。

任何帮助将不胜感激

【问题讨论】:

    标签: c# audio windows-media-player


    【解决方案1】:

    我没有使用“WindowsMediaPlayerClass”的经验,但我已经广泛使用 TagLibSharp,这是我尝试将其用于此类事情 - 它支持非常广泛的格式,这使得它的 API 比.NET 中的内置支持

    http://developer.novell.com/wiki/index.php/TagLib_Sharp

    很可能只需使用 TagLibSharp 即可解决您的问题。

    (请注意,taglibsharp 由 banshee 项目维护,但显然出于历史原因托管在 @novell。我不知道细节,但这可能会使与开发人员的联系有点混乱)

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案3】:

        我的猜测是媒体播放器没有安装(默认情况下它不是在服务器 SKU 上)。

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

        【讨论】:

        猜你喜欢
        • 2013-03-01
        • 2014-02-08
        • 2010-11-17
        • 2020-06-02
        • 1970-01-01
        • 2016-04-23
        • 2015-10-13
        • 2013-10-27
        • 1970-01-01
        相关资源
        最近更新 更多