如何查找上传的mp4或f4v视频的持续时间?

时间:2010-10-18 14:34:03

标签: c# asp.net video duration directshow.net

我尝试使用 directshowlib-2005 安装 k-lite mega codec pack 。它无法找到mp4文件或f4v文件的持续时间(avi,wmv和flv没有问题)。我使用directshowlib-2005的 ImediaSeeking 界面来查找持续时间。但是在mp4和f4v的情况下,GetDuration方法返回零

我知道这是一个编解码器问题,但我不知道要安装哪个编解码器来获取mp4和f4v文件的持续时间。

我使用的代码如下所示:

static public bool GetVideoLength(string fileName, out long length)
    {
        DirectShowLib.FilterGraph graphFilter = new DirectShowLib.FilterGraph();
        DirectShowLib.IGraphBuilder graphBuilder;
        //DirectShowLib.IMediaPosition mediaPos=null;
        DirectShowLib.IMediaSeeking mediaPos;
        length = 4294967296;

        try
        {
            graphBuilder = (DirectShowLib.IGraphBuilder)graphFilter;
            graphBuilder.RenderFile(fileName, null);
            //mediaPos = (DirectShowLib.IMediaPosition)graphBuilder;
            mediaPos = (DirectShowLib.IMediaSeeking)graphBuilder;                
           // mediaPos.get_Duration(out length);
            mediaPos.GetDuration(out length);

            return true;
        }
        catch
        {
            return false;
        }
        finally
        {               
            mediaPos = null;
            graphBuilder = null;
            graphFilter = null;               

        }
    }

任何人都可以通过告诉我应该安装的确切编解码器来帮助我找到上面提到的持续时间吗?

1 个答案:

答案 0 :(得分:1)

我只是使用MediaInfo。它还有一个CLI,因此您可以从代码中调用它并获取此信息。它几乎处理各种编解码器和容器。