2014-01-06 8 views
0

У меня есть веб-приложение, которое должно смотреть на продолжительность ранее загруженных файлов 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-файлы в проект веб-приложения в качестве ссылки не позволяет сказать, что это не действительная сборка. Есть ли какой-то другой способ, который мне нужно включить, или они каким-то образом должны быть установлены на веб-сервере?

+0

Не уверен, что это ваша единственная проблема, но вы можете зарегистрировать фильтры directshow с помощью regsvr32; например выполнить 'regsvr32 c: \ path \ to \ mp4demux.dll'. (не перемещайте и не удаляйте dll после этого). – wimh

+0

См. Http://stackoverflow.com/questions/10190906/how-to-get-video-duration-from-mp4-wmv-flv-mov-videos/10191257#10191257 + http://stackoverflow.com/questions/6215185/получение по длине из-видео –

ответ

0

Для других аналогичных путаных дополнительные фильтры MP4 должны быть зарегистрированы на машине IIS, которая выполняет код, то есть веб-хост.