我刚开始使用 DirectShow.NET,我正在尝试获取音频文件的长度(以秒为单位)。音频可以是 .mp3、.wav、.aac 或 .m4a。
我可以使用 DirectShow 获取此信息,还是需要一些其他 API?
我刚开始使用 DirectShow.NET,我正在尝试获取音频文件的长度(以秒为单位)。音频可以是 .mp3、.wav、.aac 或 .m4a。
我可以使用 DirectShow 获取此信息,还是需要一些其他 API?
是的,您可以使用 DirectShow 做到这一点。有多种方法可以做到这一点。一种方法是在图形对象上查询IMediaSeeking接口,然后在该接口上调用GetDuration方法。
GetDuration 返回一个 64 位整数值,表示播放文件需要多长时间。
您将需要调用该GetTimeFormat
方法以找出持续时间的单位。最可能的默认值是 TIME_FORMAT_MEDIA_TIME,即 10 微秒。
在这种情况下,您可以将持续时间除以 10*1000*1000 以获得秒数。
如果您想强制单位,您也可以在调用SetTimeFormat
之前调用。GetDuration
您还可以使用 IMediaPosition 接口中的 get_Duration()。
这将返回一个以秒为单位的视频持续时间的双精度值。
Double Lenght;
m_FilterGraph = new FilterGraph()
//Configure the FilterGraph()
m_mediaPosition = m_FilterGraph as IMediaPosition;
m_mediaPosition.get_Duration(out Length);