【问题标题】:How do I get the duration of a video file using C#? [closed]如何使用 C# 获取视频文件的持续时间? [关闭]
【发布时间】:2010-03-15 09:00:12
【问题描述】:

任何允许我这样做的 C# 库?

【问题讨论】:

  • 这有关系吗?例如 wmv...
  • 这是一个相关的问题:stackoverflow.com/questions/1256841/…
  • 因为 tt qn 不喜欢它!而且我没有加载 LoaderLock 异常...在弄清楚我需要 SDK 之后,我设法获得了使用 Direct X 的正确方法。下面还有一个sol,不知道是不是比Direct X好?

标签: c# visual-studio visual-studio-2008 video


【解决方案1】:

http://johndyer.name/post/2005/07/22/Retreiving-the-duration-of-a-WMV-in-C.aspx 的谷歌搜索结果

using WMPLib; // this file is called Interop.WMPLib.dll

WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
IWMPMedia mediaInfo = wmp.newMedia("myfile.wmv"); 

// write duration
Console.WriteLine("Duration = " + mediaInfo.duration);

// write named attributes
for (int i=0; i<mediaInfo.attributeCount; i++)
{
Console.WriteLine(mediaInfo.getAttributeName(i) + " = " +  mediaInfo.getItemInfo(mediaInfo.getAttributeName(i)) );
}

【讨论】:

  • 在哪里可以找到 Interop.WMPLib.dll?我可以将以上内容用于 wmv 以外的文件吗?我只是引用一个例子,我需要更多不同格式的文件。
  • 我假设您可以将它用于您安装的 Windows Media Player 版本将打开的任何文件格式,但您必须对其进行测试。我怀疑您会找到一个可以处理每种格式的库。如果 wmp.dll 不在您的系统上,请查看此链接的底部以获取有关如何包装 wmp.dll 的说明...devnewsgroups.net/group/…
【解决方案2】:

你可以试试这个扩展方法。

using Shell32;

public static class Extension
{
    public static string GetLength(this FileInfo info)
    {
        var shell = new ShellClass();
        var folder = shell.NameSpace(info.DirectoryName);
        var item = folder.ParseName(info.Name);

        return folder.GetDetailsOf(item, 27);
    }
}

【讨论】:

    【解决方案3】:

    希望下面的代码 sn-p 对你有帮助:

    using WMPLib;
    // ...your code here...
    
    var player = new WindowsMediaPlayer();
    var clip = player.newMedia(filePath);
    Console.WriteLine(TimeSpan.FromSeconds(clip.duration));
    

    并且不要忘记添加 wmp.dll 的引用,这将是 存在于 System32 文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2022-08-18
      • 2016-04-03
      • 2010-11-18
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多