我尝试通过安装k-lite巨型编解码器包来使用DirectShowlib-2005。它找不到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;
}
}
有人可以通过告诉我确切的编解码器来帮助我,以找到上述持续时间吗?
最佳答案
我只是使用MediaInfo。还有一个CLI,因此您可以从代码中调用它并获取此信息。它几乎可以处理各种编解码器和容器。
关于c# - 如何查找上载的mp4或f4v视频的时长?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3960212/