社区
多媒体/流媒体开发
帖子详情
graphedt里面的filter怎么才能得到CLSID?
vcbacker
2004-07-06 05:58:22
我在graphedt里面找到了一个XviD mpeg4 codec的filter,
在graphedt里面是可用的,
可是我从它的displayname里面却找不到正确的clsid,
在注册表里搜索也找不到,怎么才能得到这个filter的clsid?
或者有没有这样的ax文件?
...全文
196
7
打赏
收藏
graphedt里面的filter怎么才能得到CLSID?
我在graphedt里面找到了一个XviD mpeg4 codec的filter, 在graphedt里面是可用的, 可是我从它的displayname里面却找不到正确的clsid, 在注册表里搜索也找不到,怎么才能得到这个filter的clsid? 或者有没有这样的ax文件?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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了。
Directshow 注册 source
filter
编写source
filter
最初需要接触的就是
filter
的register和unregister,涉及到的函数有两个 DllRegisterServer() 以及 DllUnregisterServer() 在这两个函数中,完成了
filter
的register和unregister 而其中真正的注册,又是通过I
Filter
Mapper2::Register
Filter
() 和 I...
Graph
Edit使用
Graph
Edit 是一个用于建立和测试
Filter
graph
的可视化工具。在DirectX SDK.中附带一个可执行程序版本(在SDK目录中的Bin/DXUtils/
graph
edt
.exe)。你可以快速测试你建立的
Filter
graph
是否达到预期的效果,你也可以查看由另一个程序建立的
Filter
graph
。
Graph
Edit有标准的Windows用户界面,如图:
查看到系统中安装的
Filter
使用
Graph
Edit
pip-matplotlib-3.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.zip
pip-matplotlib-3.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.zip
YOLO算法室内安防障碍物目标检测数据集-64张-标注类别为障碍物.zip
YOLO算法室内安防障碍物目标检测数据集-64张-标注类别为障碍物.zip
这份代码是一个用于自动化批量生成合同文档的 Python 脚本
它通过读取 Excel 表格中的业务数据,结合 Word 模板,自动生成多个独立的合同文件,并自动处理了表格中“合计”行的合并与中文大写金额转换。 资源名称:合同文档自动化生成脚本 (1.py) 名字真是乱起 核心功能:Excel 数据读取 → Word 模板渲染 → 表格单元格合并与金额处理 → 批量导出 Word 文档。 适用场景:财务、销售或行政部门需要根据订单或业务明细,批量制作格式统一的合同、报价单或结算单。 1. 自动把“钱”变成“大写” 它干了啥:它内置了一个翻译功能,专门把阿拉伯数字(比如 100.50)自动转换成财务专用的中文大写(比如 壹佰元伍角)。 为什么有用:写合同最怕手滑写错金额,或者大写格式不对。这个功能全自动搞定,既标准又不会出错。 2. 自动“装修”表格底部 它干了啥:生成文档后,它会自动找到表格的最后一行,把前几列合并成一个大格子,写上“合计:XXX(大写金额)”,并在最右边填上具体的数字总额。 为什么有用:平时我们做完表格,还得手动去合并单元格、算总数、填大写,非常繁琐。这个脚本直接一步到位,把表格收尾工作做得漂漂亮亮。 3. 像“发传单”一样批量做合同 它干了啥:它会看你的 Excel 表格,按照“编号”把数据归类。 如果是同一个编号的货物,它会把它们塞进同一个合同里(比如一个客户买了三样东西,会自动列三行)。 如果是不同的编号,它就生成不同的合同文件。 为什么有用:不管你有一百个还是一千个订单,它都能自动拆分,给每个客户生成一份独立的、内容准确的合同,完全不用人工去复制粘贴。
多媒体/流媒体开发
2,554
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章