C# Web应用程序中的DirectShow Mpeg4筛选器
我有一个web应用程序,需要查看以前上传的mp4文件的持续时间。使用DirectShow NET库,代码块执行时不会出错,但它显然没有正确访问文件,因为持续时间始终为零C# Web应用程序中的DirectShow Mpeg4筛选器,c#,directshow.net,mpeg-4,C#,Directshow.net,Mpeg 4,我有一个web应用程序,需要查看以前上传的mp4文件的持续时间。使用DirectShow NET库,代码块执行时不会出错,但它显然没有正确访问文件,因为持续时间始终为零 IGraphBuilder mediaG = (IGraphBuilder) new FilterGraph(); mediaG.RenderFile(fullpath, null); IMediaPosition mediaPos = mediaG as IMediaPosition; mediaPos.get_Duratio
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文件,并且需要一些过滤器,例如,在那里似乎没有关于如何使用这些过滤器的文档。尝试将DLL作为引用包含到web应用程序项目中失败,因为它不是有效的程序集。是否有其他方法需要包含它们,或者它们是否需要以某种方式安装在web服务器上?对于其他类似困惑的人,必须在执行代码的IIS计算机(即web主机)上注册其他MP4筛选器。不确定这是否是您唯一的问题,但是您可以使用regsvr32注册directshow过滤器;例如,执行
regsvr32 c:\path\to\mp4demux.dll
。(执行此操作后不要移动或删除dll)。请参阅:+