我刚刚开始使用DirectShow.NET,我正在尝试获取音频文件的长度(以秒为单位)。音频可以是.mp3,.wav,.aac或.m4a。
我可以使用DirectShow获取此信息,还是需要其他API?
答案 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);