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

时间:2010-02-05 04:48:53

标签: audio directshow directshow.net

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

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

2 个答案:

答案 0 :(得分:2)

是的,你可以用DirectShow做到这一点。有很多种方法可以做到这一点。一种方法是查询图形对象上的IMediaSeeking接口,然后在此接口上调用GetDuration方法。

GetDuration返回64位整数值,表示播放文件所需的时间。

您需要调用GetTimeFormat方法来查找持续时间所在的单位。最可能的默认值是TIME_FORMAT_MEDIA_TIME,即十分之一微秒。

在这种情况下,您可以将持续时间除以10 * 1000 * 1000来获得秒数。

如果您想强制使用单位,也可以在致电SetTimeFormat之前致电GetDuration

答案 1 :(得分:1)

您也可以使用IMediaPosition界面中的get_Duration()。

这将返回一个双倍值,视频持续时间以秒为单位。

    Double Lenght;

    m_FilterGraph = new FilterGraph()

//Configure the FilterGraph()

    m_mediaPosition = m_FilterGraph as IMediaPosition;
    m_mediaPosition.get_Duration(out Length);