读书人

用directshow抽帧遇到有关问题

发布时间: 2013-11-06 16:26:37 作者: rapoo

用directshow抽帧遇到问题
m_pMediaPlayer->Pause();
for(LONGLONG llFrameNum=0; llFrameNum<m_iTotalTime; llFrameNum=llFrameNum+2)
{
cout<<"llFrameNum: "<<llFrameNum<<endl;
rtNow = llFrameNum * m_llavgtimeperframe;
hRes = m_pSeeking->SetPositions(&rtNow, AM_SEEKING_AbsolutePositioning,
NULL, AM_SEEKING_NoPositioning);

hRes = m_pMedia->GetState(100, &fState) ;//刷新

}

其中,m_iTotalTime和m_llavgtimeperframe表示总的帧数和每一帧平均时间;

问题是:
1. 这样做会显示的视频表现出很卡!!SetPositions处;
2. 如何GetState没有的话,视频出不来,感觉起到了刷新的作用。

[解决办法]

引用:
Quote: 引用:

SourceFilter没做过优化的话,SetPositions是会影响性能...关键看Filter怎么来实现SetPositions了...


setPosition应该是分离器上做的;但这个spliter不是自己写的!


有些SourceFilter也会实现spliter的功能,其实主要的意思就是,要去优化这个函数,不是自己写的就没办法了...

读书人网 >多媒体

热点推荐