请教Direct Show 中IMediaSeeking::SetPositions的使用方法?

airy1727 2006-02-10 08:51:34
我在使用SetPositions设置"偏移时间"的时候,
使用条件是:
一:
..SetOneShot( FALSE );
二:
pSeeking->SetPositions( &Start, AM_SEEKING_AbsolutePositioning,
&gDuration, AM_SEEKING_AbsolutePositioning );
参数Start,gDuration相等.

出现了下面的结果:
1.当Start和gDuration的数值小于60秒的时候,SetPositions返回值正确,成功执行.
2.当Start和gDuration的数值大于60秒的时候,SetPositions返回值错误,提示参数错误.


程序具体如下:
hr = pGrabber->SetOneShot( FALSE );

REFERENCE_TIME Start = 0;
REFERENCE_TIME Duration = 0;
hr = pSeeking->SetPositions( &Start, AM_SEEKING_AbsolutePositioning,
&gDuration, AM_SEEKING_AbsolutePositioning );
hr = pControl->Run( );
pEvent->WaitForCompletion( INFINITE, &EventCode );
...全文
1141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
airy1727 2006-02-10
  • 打赏
  • 举报
回复
tufaqing()
还要设置pSeeking的偏移格式(时间?帧?字节)
..
默认的已经是这个时间格式了,我也试过.


开始时间和结束时间
一样是没有关系的,对于有些文件可能不行.
taianmonkey 2006-02-10
  • 打赏
  • 举报
回复
我一直好好的:
BOOL Val = FALSE;
HRESULT hr;
LONGLONG refLen;
LONGLONG refCounter = refStart;

if ( !m_pMS || !m_pMC)
{
return FALSE;
}

JIF(m_pMS->GetDuration(&refLen));
if(refStop == 0 || refStop > refLen)
refStop = refLen;

JIF(m_pMS->SetPositions(&refStart, AM_SEEKING_AbsolutePositioning,
&refStop, AM_SEEKING_AbsolutePositioning));

JIF(m_pMC->Run());
m_psCurrent = Running;
tufaqing 2006-02-10
  • 打赏
  • 举报
回复
你将开始时间和结束时间都设成一样了,怎么能够run呢?还要设置pSeeking的偏移格式(时间?帧?字节)
pSeeking->SetTimeFormat( &TIME_FORMAT_FRAME );
REFERENCE_TIME Start = 0;(一秒为10000000L)
pSeeking->SetPositions( &Start, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning );

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧