读书人

关于DX8,对AVI现阶段播放帧,创建出一个

发布时间: 2012-09-09 09:27:54 作者: rapoo

关于DX8,对AVI当前播放帧,创建出一个页面.用于显示.

C/C++ code
大家好!请教一个问题:  在DX8中,有个例子,就是将AVI的,当前播放帧,放到一个纹理页面上显示,显示完,就显示下一帖.作用是可以将AVI的动画帧,勾出来另作处理,显示之类的.    //参数单位为秒(设置当前的播放时间.)    g_pMP->put_CurrentPosition(60);    //设置播放速度(0/1 正常速度)    g_pMP->put_Rate(2);    这些都可以用.但是    //用法不明(网上说是,设置播放到这时间时,会STOP.)    g_pMP->put_StopTime(30);    g_pMP->get_CurrentPosition(bb);//这个是获取当前帧的播放时间.(不知应该放哪个参数)    g_pMP->get_Duration(bb);//获取AVI的时长(不知应该放哪个参数)    g_pMP->get_PrerollTime(bb);//用法不明(不知应该放哪个参数)这些都没有反应.用不了.bb这个参数就不知传哪个.下面是我的代码.//long *aa=new long(0);    //double *bb=new double(10);//    if(counttime>200)//    {        //检测是否可以后退        //cout<<"back:"<<g_pMP->CanSeekBackward(aa)<<" S_OK:"<<S_OK<<endl;        //cout<<"value:"<<g_pMP->get_CurrentPosition(bb)<<endl;        //printf("value:%d,bb:%.2f\n",g_pMP->get_CurrentPosition(bb),*bb);//这个是获取当前帧的播放时间.(不知应该放哪个参数)        //printf("value:%d,bb:%.2f\n",g_pMP->get_Duration(bb),*bb);//获取AVI的时长(不知应该放哪个参数)        //printf("value:%d,bb:%.2f\n",g_pMP->get_PrerollTime(bb),bb);//用法不明(不知应该放哪个参数)        //g_pMP->put_CurrentPosition(5);//设置为从头播放        //printf("value:%d,bb:%.2f\n",g_pMP->put_Rate(1000),bb);//    }


[解决办法]
没做过这方面的,不好乱说,帮楼组顶!
[解决办法]
看看msdn,HRESULT get_CurrentPosition(
REFTIME *pllTime
);

REFTIME llTime;
get_CurrentPosition(&llTime);


get_CurrentPosition(bb);//你这传个指针过去 肯定不行
g_pMP->get_CurrentPosition(bb);//这个是获取当前帧的播放时间 g_pMP->get_Duration(bb);//获取AVI的时长 g_pMP->get_PrerollTime(bb);//Retrieves the amount of data that will be queued before the start position.
[解决办法]
使用directshow 最方便的的版本是DirectX9.0b

使用方法在
<directshow开发指南>有详细的介绍
<directshow实务精选>有例子

directshow自带的开发文档 这个最全了,位置如下
..\Doc\DirectX9\DirectX9_c.chm

读书人网 >VC/MFC

热点推荐