我尝试使用 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;
}
}
任何人都可以通过告诉我应该安装的确切编解码器来帮助我找到上面提到的持续时间吗?