Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web应用程序中的DirectShow Mpeg4筛选器_C#_Directshow.net_Mpeg 4 - Fatal编程技术网

C# Web应用程序中的DirectShow Mpeg4筛选器

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

我有一个web应用程序,需要查看以前上传的mp4文件的持续时间。使用DirectShow NET库,代码块执行时不会出错,但它显然没有正确访问文件,因为持续时间始终为零

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)。请参阅:+