我需要获取 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 but it doesn't work or because I don't think that it works on MP4 files.
说真的,我觉得必须有一个更简单的方法来做到这一点。
注意:我宁愿避免使用像 ffmpeg 这样的 exe,然后解析输出以获取信息。