首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

用directshow抽帧遇到有关问题

2013-11-06 
用directshow抽帧遇到问题m_pMediaPlayer-Pause()for(LONGLONG llFrameNum0 llFrameNumm_iTotalTime

用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的功能,其实主要的意思就是,要去优化这个函数,不是自己写的就没办法了...

热点排行