Я пытался использовать directshowlib-2005 путем установки k-lite мегакодек pack. Он не может найти продолжительность файла mp4 или файла f4v (avi, wmv и flv не представляет проблемы). Я использую ImediaSeeking интерфейс directshowlib-2005, чтобы найти продолжительность. Но в случае mp4 и f4v метод GetDuration возвращает ноль.Как найти длительность загруженного видео mp4 или f4v?
Я знаю, что это проблема с кодеком, но я не знаю, какой кодек должен быть установлен для получения 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;
}
}
Может кто-нибудь, пожалуйста, помогите мне, говоря мне точный кодек, который должен быть установлен, чтобы найти продолжительность, как упоминалось выше?
Этот ответ на несколько иной вопрос, который я задал, вероятно, сработает для вас: http://stackoverflow.com/questions/3936816/querying-an-audio-video-file-for-information/3938722#3938722 – TRiG
И MP4 файлы могут содержать различные кодеки. Может быть H.264 (вполне вероятно), или может быть что-то еще. – TRiG
Привет, Во время поиска, чтобы узнать, почему мой код не работает для mp4, я нашел следующее заявление: «Неважно, находится ли он в контейнере или нет, он имеет значение только для того, есть ли у вас анализатор/считыватель для него Там не является парцером DirectShow для чтения необработанных файлов H.264 и нет стороннего, о котором я могу думать. Кроме того, будет ли IMediaSeeking работать с таким необработанным файлом, зависит от реализации. Последнее, большинство H. 264-фильтры используют MPEG2Video или VideoInfo2, и ни один из них не работает с MediaDet, поэтому вам нужно будет построить график самостоятельно ». вы можете мне помочь? – Harun