求教视频捕捉的问题!设置压缩方式!

christopher_hp 2005-08-30 09:15:20
用DX9来控制摄像头采集视频图象,当保存视频图像为文件的时候,怎么设置压缩解码呢?
直接保存为AVI太大了!
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
christopher_hp 2005-08-31
  • 打赏
  • 举报
回复
现在连接都可以了,但是用
m_tCapParam.pGraphBuilder2->RenderStream(&PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Video, m_tCapParam.pVCap,
m_tCapParam.pCompress, m_tCapParam.pRender)
连接的时候,试题说“Invalid argument”,不知道是哪个参数错了,
望告知!
christopher_hp 2005-08-31
  • 打赏
  • 举报
回复
我用ICreateDevEnum枚举并得到了需要的压缩解码,放在IMoniker,然后用
hr =pMoniker->BindToObject(0, 0, IID_IBaseFilter,(void**)&m_tCapParam.pCompress)
得到IBaseFilter,保存在m_tCapParam.pCompress,然后怎么添加到视频CAPTURE文件中去呢?
我用
m_tCapParam.pVideoInPin =GetInPin (*pVideo, 0);
m_tCapParam.pVideoOutPin =GetOutPin (*pVideo, 0);
m_tCapParam.pCompressInPin =GetInPin (*pCompress, 0);
m_tCapParam.pCompressOutPin =GetOutPin (*pCompress, 0);
m_tCapParam.pMuxInPin =GetInPin (*pRender, 0);

hr =m_tCapParam.pGraph->Connect(m_tCapParam.pVideoOutPin, m_tCapParam.pCompressInPin);
if (FAILED(hr))
{
if (hr==VFW_S_PARTIAL_RENDER)
ShowMessage ("VFW_S_PARTIAL_RENDER");
else if (hr==E_POINTER)
ShowMessage ("E_POINTER");
else if (hr==VFW_E_CANNOT_CONNECT)
ShowMessage ("VFW_E_CANNOT_CONNECT");
else if (hr==VFW_E_NOT_IN_GRAPH)
ShowMessage ("VFW_E_NOT_IN_GRAPH");
else
ShowMessage ("Could not connect video to selected compressor.");
return ;
}
提示VFW_E_CANNOT_CONNECT,
我该怎么连接呢?

IGraphBuilder *pGraph; //图表建造器
ICaptureGraphBuilder2 *pGraphBuilder2; //图表捕捉器
BaseFilter *pVCap; //标准视频接口
IBaseFilter *pACap; //标准音频接口
christopher_hp 2005-08-30
  • 打赏
  • 举报
回复
能说详细一点吗
我是想得到,选择压缩方式的对话框,好象VFW一样可以选择压缩方式的对话框
DentistryDoctor 2005-08-30
  • 打赏
  • 举报
回复
将所需要的Codec作为Transform filter加入到Capture Filter Graph中,再Connect就行了。(当然你得保证Pin之间的连接可以成功)

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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