【发布时间】:2014-01-24 12:48:26
【问题描述】:
我有一个 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 文件并且需要一些过滤器,例如 http://www.gdcl.co.uk/mpeg4 中的过滤器。似乎没有关于这些过滤器究竟应该做什么的文档。尝试将 dll 作为参考包含到 Web 应用程序项目中失败,说明它不是有效的程序集。我是否需要以其他方式包含它们,或者是否需要以某种方式将它们安装在 Web 服务器上?
【问题讨论】:
-
不确定这是否是您唯一的问题,但您可以使用 regsvr32 注册 directshow 过滤器;例如执行
regsvr32 c:\path\to\mp4demux.dll。 (这样做后不要移动或删除 dll)。
标签: c# directshow.net mpeg-4