【问题标题】:how to get video file duration in C#如何在 C# 中获取视频文件的持续时间
【发布时间】:2009-08-19 09:12:18
【问题描述】:

我想在 C# 中获取视频文件的持续时间。我可以获取视频文件的持续时间,但代码仅适用于本地计算机。如果我在服务器上部署我的代码并上传视频文件,那么此代码会出错。我正在使用以下代码来获取视频时间。

使用 QuartzTypeLib;

 string file1 = "c://ds.mpeg"
        IMediaPosition m_objMediaPosition = null;
        FilgraphManager m_objFilterGraph = new FilgraphManager();
        m_objFilterGraph.RenderFile(filename);
        m_objMediaPosition = m_objFilterGraph as IMediaPosition;

        int s = (int)m_objMediaPosition.Duration;
        int h = s / 3600;
        int m = (s - (h * 3600)) / 60;
        s = s - (h * 3600 + m * 60);

        string time = String.Format("{0:D2}:{1:D2}:{2:D2}", h, m, s);
        lblmsg.Text = time.ToString();
        m_objMediaPosition = null;
        m_objFilterGraph = null;

你有任何代码可以返回上传的视频文件的持续时间。

【问题讨论】:

    标签: c# .net video duration


    【解决方案1】:

    ffmpeg 的快速而肮脏的方式:运行 ffmpeg -i "c:\ds.mpeg" 并解析输出。

    【讨论】:

      【解决方案2】:

      尝试使用 DirectShowLib

      【讨论】:

        【解决方案3】:

        听起来您正在使用的控件正在尝试以某种方式引用图形硬件来执行此功能。即使用 UI 能够枚举此信息。

        或许你可以看看WPF中的MediaElement control

        【讨论】:

          【解决方案4】:

          我尝试以不同的方式获取视频长度:
          实际上也使用 Windows Media Player 组件,我们可以得到视频的时长。
          以下代码 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 文件夹中。

          【讨论】:

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