【发布时间】:2012-07-05 23:08:21
【问题描述】:
我需要获取 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 异常:0x80040265”
我也试过用这个:Getting length of video 但它也不起作用,因为我认为它不适用于 MP4 文件。
说真的,我觉得必须有一个更简单的方法来做到这一点。
注意:我宁愿避免使用像 ffmpeg 这样的 exe,然后解析输出以获取信息。
【问题讨论】:
-
经过一番探索,我似乎无法通过 DirectShow 获得该信息,因为它不支持 MP4,这令人难以置信。无论如何,我们将不胜感激。
标签: c# directshow mp4 duration directshow.net