Tag: duration

使用DirectShow获取MP4文件持续时间

我需要获取mp4文件的持续时间,最好是以秒为单位的两倍。 我正在使用DirectShow(参见下面的代码),但它一直在抛出一个特别无益的错误。 我想知道是否有人有一个简单的解决方案。 (说真的,谁知道获取这些信息会非常困难) public static void getDuration(string moviePath) { FilgraphManager m_objFilterGraph = null; m_objFilterGraph = new FilgraphManager(); m_objFilterGraph.RenderFile(moviePath); IMediaPosition m_objMediaPosition = null; m_objMediaPosition = m_objFilterGraph as IMediaPosition; Console.WriteLine(m_objMediaPosition.Duration); } 每当我运行此代码时,我都会收到错误:“来自HRESULT的exception:0x80040265” 我也试过使用这个: 得到video的长度,但它不起作用,因为我不认为它适用于MP4文件。 说真的,我觉得必须有一个更简单的方法来做到这一点。 注意:我宁愿避免使用类似ffmpeg的exe,然后解析输出以获取信息。

C# – 两个日期时间之间的持续时间(分钟)

我需要确定两个DateTimes之间的持续时间(以分钟为单位)。 然而,有一点点扭曲: 排除周末 只计算在上午7:00到下午7:00之间的分钟数。 例如: [09/30/2010 6:39:00 PM] – [09/30/2010 7:39:00 PM] = 21 Minutes 我只是很难想出一个体面的方式来做这件事,如果有人能提出建议,我会很感激。 谢谢。 编辑: 我最终选择了dtb的解决方案。 只有一个特殊情况需要注意:如果结束时间是晚上7点之后,则计算从上午7点到实际结束时间的分钟数。 这是我修改它的方式: var minutes = from day in start.DaysInRangeUntil(end) where !day.IsWeekendDay() let st = Helpers.Max(day.AddHours(7), start) let en = (day.DayOfYear == end.DayOfYear ? end : Helpers.Min(day.AddHours(19), end) ) select (en – st).TotalMinutes; 再一次感谢你的帮助。

获得video的长度

我无法找到一个如何以编程方式获取文件video长度的简单示例。 很多人说,哦,使用这个库/包装或其他什么,但不说如何。 我已经下载了ffmpeg,但不知道如何实际使用它,并且似乎没有任何关于如何使用它来获取video持续时间的示例。 我看到你如何使用它来转换video,但我只是想知道video的持续时间。 所有其他信息都无关紧要。 有没有办法简单地做到这一点,无论是在C#,python,java等等,只会返回一个表示video文件长度的字符串。 如果可能,请提供示例。 提前致谢! 假设标准文件格式,例如wmv,avi,mp4,mpeg。 有元数据的东西。