directshow 断点续播会卡住
用ds开发的播放器,播放时需要从上次停止播放的位置开始播放。如果从头开始播放的话,是不会卡住的,但是一旦从上次的位置播放,有时候显示画面后就会卡住不动,有时候又能正常播放。代码片段如下:
filter已连接成功,准备开始播放
if(m_nStartPosition != 0)
{
LONGLONG llTime = LONGLONG(m_TimeFormat == TIME_FORMAT_MEDIA_TIME ? m_nStartPosition * double(UNITS) : m_nStartPosition );
hr = m_pMs->SetPositions(&llTime, AM_SEEKING_AbsolutePositioning, NULL, 0);
}
hr = m_pMC->Run();
也就是说在run之前先调用SetPositiong来定位播放时间。所播放的影片都是1M 多的大码流影片,以前播小码流的文件好像没有这种现象。应该如何优化好呢? directshow 断点续播
[解决办法]
m_pAllocator->GetBuffer(ppSample,pStartTime,pEndTime,dwFlags);
//也就是说,获取不了空闲的sample,一直在等待空闲sample的析放。
//那是否可以处理下等到有空闲了再调用这个接口呢?