获得当前转档时间应该使用IMediaSeeking接口中的GetCurrentPosition.但是,从GraphBuilder去QueryInterface得到的IMediaSeeking只能作用于playback,而write
file时取得的时间是不准确的。
现在,从写文件的Filter,如AVI Mux,WMV Mux,来获得IMediaSeeking,用它去取当前时间,这样就正确了。不过一些write
Filter,对IMediaSeeking支持的不够好,需要再加上一些额外的工作。
简单示例:
m_pGraphBuilder->QueryInterface(IID_IMediaSeeking, (void**) &m_pIMediaSeeking);
m_pIMediaSeeking->GetCurrentPosition();
在正常Playback的时候,可以用这种方法得到播放的当前位置。但在写文件的时候,这种方法得到的时候不准确。
应该从Mux Filter上得。
例:
IBaseFilter *m_pIBFMux ;
m_pICaptureGraphBuilder2->SetOutputFileName(&MEDIASUBTYPE_Asf,
wOutName, &m_pIBFMux, &m_pIFileSinkFilter);
m_pIBFMux->QueryInterface(IID_IMediaSeeking, (void**) &m_pIMediaSeekingMux);
m_pIMediaSeekingMux->GetCurrentPosition();
在DES编辑时也经常遇到这种情况