社区
多媒体/流媒体开发
帖子详情
DirectShow CoCreateInstance IBaseFilter问题
EraserPeople
2009-07-21 10:12:06
Mobile6 平台:
IBaseFilter *pWriter;
hResult = CoCreateInstance(CLSID_FileWriter,NULL,CLSCTX_INPROC,IID_IBaseFilter,(void**)&pWriter);
此hResult返回错误"class not registered",这是怎么回事?我还需要手动regsvrce.exe什么dll文件吗?
...全文
80
5
打赏
收藏
DirectShow CoCreateInstance IBaseFilter问题
Mobile6 平台: IBaseFilter *pWriter; hResult = CoCreateInstance(CLSID_FileWriter,NULL,CLSCTX_INPROC,IID_IBaseFilter,(void**)&pWriter); 此hResult返回错误"class not registered",这是怎么回事?我还需要手动regsvrce.exe什么dll文件吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wwwmmx2008
2009-07-29
打赏
举报
回复
mark
techbridge
2009-07-27
打赏
举报
回复
Filter没有注册
ani_di
2009-07-27
打赏
举报
回复
hr = CoCreateInstance(clsid, 0, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, reinterpret_cast<void**>(&pWriter));
试试这个
theer
2009-07-22
打赏
举报
回复
不懂。帮顶~
EraserPeople
2009-07-21
打赏
举报
回复
神啊,救救我吧.
directshow
USB摄像头预览
//指定视频采集设备的友好名字,为它创建一个
Filter
I
Base
Filter
* CTestPreviewDlg::Cr
eate
VideoDevice(const char * inFriendlyName) { return Cr
eate
Hardware
Filter
(CLSID_VideoInputDeviceCategory,inFriendlyName); } //根据设备的友好名字,创建一个代表该设备的
Filter
I
Base
Filter
* CTestPreviewDlg::Cr
eate
Hardware
Filter
(GUID inCategory,const char * inFriendlyName) { //创建一个系统枚举组件对象 ICr
eate
DevEnum * enumHardware = NULL; HRESULT hr = C
oCr
eate
Instance
(CLSID_SystemDeviceEnum,NULL,CLSCTX_ALL, IID_ICr
eate
DevEnum,(void**)&enumHardware); if(FAILED(hr)) { return NULL; } I
Base
Filter
* hardware
Filter
= NULL; IEnumMoniker * enumMoniker = NULL; //为指定的目录创建枚举器 hr = enumHardware->Cr
eate
ClassEnumerator(inCategory,&enumMoniker,0); if(enumMoniker) { enumMoniker->Reset(); ULONG fetched = 0; IMoniker * moniker = NULL; char friendlyName[256]; //枚举得到该目录下所有的设备,逐个进行名字匹配 while(!hardware
Filter
&& SUCCEEDED(enumMoniker->Next(1,&moniker, &fetched)) && fetched) { if(moniker) { IPropertyBag * propertyBag = NULL; VARIANT name; friendlyName[0] = 0; hr = moniker->BindToStorage(0,0,IID_IPropertyBag,(void**)&propertyBag); //读取设备的友好名字 if(SUCCEEDED(hr)) { name.vt = VT_BSTR; hr = propertyBag->Read(L"Friendlyname",&name,NULL); } if(SUCCEEDED(hr)) { WideCharToMultiByte(CP_ACP,0,name.bstrVal,-1, friendlyName,256,NULL,NULL); //如果当前设备的友好名字与用户指定的设备名字相同, //则将当前设备标识绑定为
Filter
形式 if(strcmp(friendlyName,inFriendlyName) == 0) { moniker->BindToObject(0,0,IID_I
Base
Filter
, (void**)&hardware
Filter
); } } //释放使用过的接口 if(propertyBag) { propertyBag->Release(); propertyBag = NULL; } moniker->Release(); } } enumMoniker->Release(); } enumHardware->Release(); return hardware
Filter
; }
最简单的基于
DirectShow
的示例:视频播放器自定义版
本文记录一个简单的基于
DirectShow
的自定义的视频播放器。这里所说的“自定义播放器”,实际上指的是自己在
Filter
Graph中手动逐个添加
Filter
,并且连接这些
Filter
的后运行的播放器。这么做相对于使用RenderFile()这种“智能”创建
Filter
Graph的方法来说要复杂不少,但是可以让我们更加了解
DirectShow
的体系。流程图最简单的基于
DirectShow
的自定
DirectShow
的常用接口
DirectShow
的重要接口
DirectShow
采用了COM标准,所以很多重要的功能都是通过COM接口来完成。下面就列举一些重要的
DirectShow
的接口。 (1) IGraphBuilder接口 用于构造
Filter
Graph的接口,建立和管理一系列的
Filter
,过滤和处理源媒体流。 (2) IMediaControl接口 用于控制多媒体流在过...
windows下
directShow
音视频采集
简单介绍windows下
directShow
视频采集的过程和主要API
C#下的
Directshow
作者:显天 转自:http://blog.csdn.net/yixiantian7/article/details/20313249 因为
Directshow
是C++的东西,后来为了方便,才有牛人们在C#把
directshow
重写,但是相关文档很少,所以为了了解
DIrectshow
,从C++下的
directshow
开始是最合理不过的了,但是在C#用不到的知识就基本没有提及了··
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章