关于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