代码之家  ›  专栏  ›  技术社区  ›  Judah Gabriel Himango

使用DirectShow确定音频文件的长度

  •  2
  • Judah Gabriel Himango  · 技术社区  · 15 年前

    我刚开始使用directshow.net,我正在尝试获取音频文件的长度(以秒为单位)。音频可以是.mp3、.wav、.aac或.m4a。

    我可以使用DirectShow获取这些信息,还是需要其他一些API?

    2 回复  |  直到 12 年前
        1
  •  2
  •   John Knoeller    15 年前

    是的,您可以使用DirectShow执行此操作。有多种方法可以做到这一点。一种方法是查询 IMediaSeeking 接口,然后调用 GetDuration 此接口上的方法。

    GetDuration返回一个64位整数值,用于播放文件所需的时间。

    你需要打电话给 GetTimeFormat 方法确定持续时间的单位。最可能的默认值是时间格式化媒体时间,即10微秒。

    在这种情况下,将持续时间除以10*1000*1000得到秒。

    你也可以打电话 SetTimeFormat 打电话之前 GetDuration 如果你想强制部队。

        2
  •  1
  •   JoaquinG    12 年前

    您还可以使用来自IMediposition接口的get_duration()。

    这将返回以秒为单位的视频持续时间的双精度值。

        Double Lenght;
    
        m_FilterGraph = new FilterGraph()
    
    //Configure the FilterGraph()
    
        m_mediaPosition = m_FilterGraph as IMediaPosition;
        m_mediaPosition.get_Duration(out Length);