2

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

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

4

2 回答 2

2

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

GetDuration 返回一个 64 位整数值,表示播放文件需要多长时间。

您将需要调用该GetTimeFormat方法以找出持续时间的单位。最可能的默认值是 TIME_FORMAT_MEDIA_TIME,即 10 微秒。

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

如果您想强制单位,您也可以在调用SetTimeFormat之前调用。GetDuration

于 2010-02-05T07:13:38.330 回答
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);
于 2013-01-24T12:22:24.347 回答