У меня есть веб-приложение, которое должно смотреть на продолжительность ранее загруженных файлов mp4. Используя библиотеку DirectShow NET, блок кода выполняется без ошибок, но на самом деле он явно не обращается к файлу правильно, так как продолжительность всегда равна нулю.Фильтры DirectShow Mpeg4 в веб-приложении
IGraphBuilder mediaG = (IGraphBuilder) new FilterGraph();
mediaG.RenderFile(fullpath, null);
IMediaPosition mediaPos = mediaG as IMediaPosition;
mediaPos.get_Duration(out minTime);
//convert duration to millisec
time = Convert.ToInt32(Math.Floor(minTime)) * 1000;
некоторых поисков выяснилось, что DirectShow не обрабатывает mp4 файлы и требует некоторых фильтров, таких как те, в http://www.gdcl.co.uk/mpeg4 Там, кажется, нет никакой документации о том, что именно должно быть сделано с этими фильтрами. Попытка включить DLL-файлы в проект веб-приложения в качестве ссылки не позволяет сказать, что это не действительная сборка. Есть ли какой-то другой способ, который мне нужно включить, или они каким-то образом должны быть установлены на веб-сервере?
Не уверен, что это ваша единственная проблема, но вы можете зарегистрировать фильтры directshow с помощью regsvr32; например выполнить 'regsvr32 c: \ path \ to \ mp4demux.dll'. (не перемещайте и не удаляйте dll после этого). – wimh
См. Http://stackoverflow.com/questions/10190906/how-to-get-video-duration-from-mp4-wmv-flv-mov-videos/10191257#10191257 + http://stackoverflow.com/questions/6215185/получение по длине из-видео –