Я пытался использовать directshowlib-2005 , установив пакет мега-кодеков k-lite . не может найти продолжительность файла mp4 или f4v (avi, wmv и flv не имеет проблем) . Я использую ImediaSeeking интерфейс directshowlib-2005, чтобы найти продолжительность. Но в случае 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;
}
}
Может ли кто-нибудь помочь мне, указав точный кодек, который должен быть установлен для определения продолжительности, как указано выше?