directshow 没法改变录像帧率。录像时间不一致问题

chengyilyh 2012-11-08 07:47:25
在vc下用directshow开发视频软件,
发现个问题。
利用IAMStreamConfig 获取配置之后
修改,VIDEOINFOHEADER 中的AvgTimePerFrame 参数,没法实现录像帧率修改。
目前发现,只要摄像头本身不支持帧率修改的话, 该参数修改了,好像也不起作用。
由于我加入了mpeg4压缩。
用的是微软的压缩代码。

最后出现录像1分钟时间,但是录像的文件属性显示1分08秒,不知道为甚么
反复测试也是如此。

有人知道怎么回事吗?

hr = pCGB2->FindInterface(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video, pCap,IID_IAMStreamConfig, (void **)&pSC);
AM_MEDIA_TYPE *mtt=NULL;
hr = pSC->GetFormat( &mtt );
if ( FAILED( hr) )
{
Error( TEXT("Could not read the connected media type"));
return hr;
}
VIDEOINFOHEADER *vihh = reinterpret_cast<VIDEOINFOHEADER *>(mtt->pbFormat);
int nWidth,nHeight;
vihh->bmiHeader.biHeight=240;
vihh->bmiHeader.biWidth=320;
vihh->AvgTimePerFrame=400000;
pSC->SetFormat(mtt);
DeleteMediaType(mtt);
pSC->Release();
...全文
316 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengyilyh 2012-11-12
  • 打赏
  • 举报
回复
经过我很多测试,发现问题很奇怪。 我测试过3个摄像头 1个是几十元的普通摄像头,随便什么帧率,最后录制结果都是正确的。 1个是上千元的显微摄像头,帧率不能修改不说,随便怎么弄录制结果都不对。 还有1个是几百元的摄像头,帧率可以修改,但是只能是他pin界面里面可选的那几种,而且时间录制出来也不对。
izardMan 2012-11-10
  • 打赏
  • 举报
回复
你用25帧吗,改成30帧试试吧

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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