社区
多媒体/流媒体开发
帖子详情
graphedt里面的filter怎么才能得到CLSID?
vcbacker
2004-07-06 05:58:22
我在graphedt里面找到了一个XviD mpeg4 codec的filter,
在graphedt里面是可用的,
可是我从它的displayname里面却找不到正确的clsid,
在注册表里搜索也找不到,怎么才能得到这个filter的clsid?
或者有没有这样的ax文件?
...全文
154
7
打赏
收藏
graphedt里面的filter怎么才能得到CLSID?
我在graphedt里面找到了一个XviD mpeg4 codec的filter, 在graphedt里面是可用的, 可是我从它的displayname里面却找不到正确的clsid, 在注册表里搜索也找不到,怎么才能得到这个filter的clsid? 或者有没有这样的ax文件?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vcbacker
2004-07-06
打赏
举报
回复
我刚才仔细看了一下注册表,发现陆老师讲的确实很有道理,真是见多识广啊~~~佩服佩服~~~
vcbacker
2004-07-06
打赏
举报
回复
多谢陆老师,
xvid官方只发布了directshow decode filter,没有 encode的filter,
在他们的论坛上许多外国人也在找这个,
你有没有兴趣写一个出来?应该有很多人都会需要的~~~
happydeer
2004-07-06
打赏
举报
回复
给点例子代码给你!(以下代码摘自《DirectShow实务精选》)
IBaseFilter* pFlt = UDsUtils::CreateCompressor(TRUE, "DivX 5.0.2 Codec");
IBaseFilter * UDsUtils::CreateCompressor(BOOL inIsVideo, const char * inName)
{
GUID guid = inIsVideo ? CLSID_VideoCompressorCategory : CLSID_AudioCompressorCategory;
return CreateHardwareFilter(guid, inName);
}
IBaseFilter * UDsUtils::CreateHardwareFilter(GUID inCategory, const char * inFriendlyName)
{
ICreateDevEnum * enumHardware = NULL;
HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_ALL,
IID_ICreateDevEnum, (void**)&enumHardware);
if (FAILED(hr))
{
return NULL;
}
IBaseFilter * hardwareFilter = NULL;
IEnumMoniker * enumMoniker = NULL;
hr = enumHardware->CreateClassEnumerator(inCategory, &enumMoniker, 0);
if (enumMoniker)
{
enumMoniker->Reset();
ULONG fetched = 0;
IMoniker * moniker = NULL;
char friendlyName[256];
while (!hardwareFilter && 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);
if (strcmp(friendlyName, inFriendlyName) == 0)
{
moniker->BindToObject(0, 0, IID_IBaseFilter, (void**)&hardwareFilter);
}
}
// Release interfaces
if (propertyBag)
{
propertyBag->Release();
propertyBag = NULL;
}
moniker->Release();
}
}
enumMoniker->Release();
}
enumHardware->Release();
return hardwareFilter;
}
happydeer
2004-07-06
打赏
举报
回复
哦,那就是XviD mpeg4 codec使用了CLSID_AVI Compressor进行包装,这种filter你不能直接通过clsid去创建;而要枚举Video Compressors目录,然后通过名字匹配找到XviD mpeg4 codec,再将它绑定成一个filter的形式。
vcbacker
2004-07-06
打赏
举报
回复
另外,用你的filter tracer查到的clsid我在注册表里面也曾经找到过,
用它产生的却是CLSID_AVI Compressor,这是为什么?
vcbacker
2004-07-06
打赏
举报
回复
陆老师,我刚才去了xvid的官方网站,发现有很多人在找 xvid 的 directshow encode filter,
xvid自己没有发布这个,据说是因为某些法律问题~~
你有没有做过这个filter?
happydeer
2004-07-06
打赏
举报
回复
用我的filter tracer可以看到。
可以从http://hqtech.nease.net/Software.htm下载“Filter Tracer V1.88版”,然后注册,然后在Graphedit中插入这个filter。打开filter tracer的属性页,就可以察看filter graph中的所有filter了。
Graph
Edit使用
Posted by 令狐葱 on 2006年02月21日
Graph
Edit 是一个用于建立和测试
Filter
graph
的可视化工具。在DirectX SDK.中附带一个可执行程序版本(在SDK目录中的Bin\DXUtils\
graph
edt
.exe)。你可以快速测试你建立的
Filter
graph
是否达到预期的效果,你也可以查看由另一个程序建立的
Filter
graph
。
Graph
windows directshow使用lav
filter
开发h264码流摄像头(2)
之前发布过一篇文章windows directshow使用lav
filter
开发h264码流摄像头,但是存在一个问题就是预览的延时太大。因为是比较老的呈现器,无法使用lav
filter
的硬件加速,需要将呈现器更换成呈现器才可以使用硬件加速,但两个呈现器的使用方法有所差别,于是就有了这篇文章。使用硬件加速降低h264摄像头预览延迟预览实时码流显示预览视频录制先提供实际效果图和
graph
edt
的调试图流程:注意lav
filter
框起来的地方要正确显示激活硬件加速,才可以降低预览的延时。
DirectShow中的工具
Graph
Edit使用小结
一. 安装完Windows SDK 7.0或7.1后,在C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin下有32位的
graph
edt
.exe,及x64目录下有64位版本的
graph
edt
.exe,当使用任何一个版本不正常的行为时,换成另一个版本试试; 二. 在Win7下,
Graph
Edit的【Connect To Remote
Graph
】
delphi下编写
filter
以及调试
一般用dspack开发directshow 1.从工程文件以dll方式建立
filter
工程,在工程头加上如下 uses BaseClass, xxx.pas; //编写
filter
单元的文件,套加 {$E ax} //编译出.AX格式文件 exports //导出
Filter
相关的函数,定义在BaseClass.Pas DllGetClassObj
Graph
Edit 的作用和使用
Graph
Edit 是一个用于建立和测试
Filter
graph
的可视化工具。在DirectX SDK.中附带一个可执行程序版本(在SDK目录中的Bin/DXUtils/
graph
edt
.exe)。你可以快速测试你建立的
Filter
graph
是否达到预期的效果,你也可以查看由另一个程序建立的
Filter
graph
。
Graph
Edit有标准的Windows用户界面,如图:查看到系统中安装的
Filter
使用
Graph
Edit,可以查看到系统中所有(正常)安装的
Filter
。执行菜单命令
Graph
| In
多媒体/流媒体开发
2,553
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章