社区
多媒体/流媒体开发
帖子详情
directshow 问题
天天学习^好好向上
2009-05-07 04:55:51
我用directshow写了一个程序,就是简单的使用IGraphBuilder直接RenderFile,
但是我在vc环境中debug时,发现生成的filtergraph和 不调试,直接运行,生成filtergraph不一样
在vc环境的解码filter和直接运行的filter用的不是同一个
但是程序是在同一台机器上,难道调试模式和运行模式,对与directshow还有什么不一样吗?
那个大侠遇到过这个问题啊,帮忙解决一下
...全文
101
7
打赏
收藏
directshow 问题
我用directshow写了一个程序,就是简单的使用IGraphBuilder直接RenderFile, 但是我在vc环境中debug时,发现生成的filtergraph和 不调试,直接运行,生成filtergraph不一样 在vc环境的解码filter和直接运行的filter用的不是同一个 但是程序是在同一台机器上,难道调试模式和运行模式,对与directshow还有什么不一样吗? 那个大侠遇到过这个问题啊,帮忙解决一下
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
UDX协议
2009-05-09
打赏
举报
回复
CyberLink Video/SP Decoder(PDVD7)应该是它有反调试技术。
如果你在debug模式下,他会不加载。
其实很多解码器,压缩器都会保护自己。
天天学习^好好向上
2009-05-09
打赏
举报
回复
我如果在debug模式,那么文件filter链路
MPEG2_ts.MPG->CyberLink Demux(PDVD7)->Microsoft MPEG-2 Video Decocde->VideoRenderer
如果不在debug模式,那么文件filter链路就会变成
MPEG2_ts.MPG->CyberLink Demux(PDVD7)->CyberLink Video/SP Decoder(PDVD7)->VideoRenderer
实际上第二个才是正确的,就是在DEBUG模式下不对,如果程序在debug模式下运行就异常了,不能放映,直接运行就能放映了
天天学习^好好向上
2009-05-09
打赏
举报
回复
我就是在graphedit中看到的,如果在VS2005中运行,graphedit用connect remote 查看,看到使用的解码器,是一个,如果不debug,直接从外部运行,用graphedit用connect remote 查看,看到的却是另外一个解码器,都是同一个程序,同一个机器,结果2种状态却不一样。
然后我找到了另外一个同事用bcb写的一个播放器,对于这个文件,在bcb的debug状态,和直接运行状态,2个的生成的图也不一样。
这directshow也真是太神奇了
天天学习^好好向上
2009-05-09
打赏
举报
回复
确实是这个问题,这个解码器在调试状态无法插入,可能确实保护了
luckyboy101
2009-05-08
打赏
举报
回复
HRESULT AddToRot(IUnknown *pUnkGraph, DWORD *pdwRegister)
{
IMoniker *pMoniker;
IRunningObjectTable *pROT;
if(FAILED(GetRunningObjectTable(0,&pROT)))
{
return E_FAIL;
}
WCHAR wsz[256];
wsprintfW(wsz,L"FilterGraph %08x pid %08x", (DWORD_PTR)pUnkGraph,
GetCurrentProcessId());
HRESULT hr=CreateItemMoniker(L"!", wsz,&pMoniker);
if(SUCCEEDED(hr))
{
hr=pROT->Register(ROTFLAGS_REGISTRATIONKEEPSALIVE,pUnkGraph,
pMoniker,pdwRegister);
pMoniker->Release();
}
pROT->Release();
return hr;
}
void RemoveFromRot(DWORD pdwRegister)
{
IRunningObjectTable *pROT;
if(SUCCEEDED(GetRunningObjectTable(0,&pROT)))
{
pROT->Revoke(pdwRegister);
pROT->Release();
}
}
#ifdef _DEBUG
hr=AddToRot(pGraph,&dwRegister);
#endif
在graphedit中看看vc中的filter
UDX协议
2009-05-07
打赏
举报
回复
一般不会出现,你可以注册到rot上,在ge中可以明确看到不同点。
如果真如你说的不同,请把filter链路的名字排出来,帮你分析一下。
天天学习^好好向上
2009-05-07
打赏
举报
回复
难道没有哪位遇到过这种问题吗?
VS与
directshow
开发版本
问题
在探讨VS(Visual Studio)与
DirectShow
开发版本
问题
时,我们首先需要理解
DirectShow
是什么、它与DirectX的关系,以及如何确保使用的版本与VisualStudio版本兼容。本文将围绕这些核心内容进行详细介绍,帮助读者更好...
DirectShow
AV 视频管理源码
同时,源码也是调试
DirectShow
问题
的宝贵资料,有助于解决播放异常、卡顿等
问题
。 综上,
DirectShow
AV 视频管理源码的学习和研究对于提升Windows平台上的视频处理能力非常有帮助,无论是理解
DirectShow
的工作机制...
graphedt dx8.1
directshow
的老的经典工具
尽管随着时间的推移,新的工具如Media Foundation SDK中的GraphBuilder已经出现,但GraphEdit因其简单易用和强大的功能,仍然是许多开发者解决
DirectShow
问题
的首选。 总之,GraphEdit DX8.1是
DirectShow
开发中的一...
DirectShow
开发指南
DirectShow
开发指南
DirectShow
开发指南
此外,由于
DirectShow
依赖于底层硬件驱动,因此在处理不同硬件设备时可能会遇到兼容性
问题
。 总之,
DirectShow
是Windows平台多媒体开发的基石,通过深入理解和熟练运用
DirectShow
,开发者能够构建出高效、灵活的...
c++
directshow
采集摄像头
DirectShow
是Microsoft开发的一个用于多媒体流处理的框架,主要用于视频和音频的捕获、编辑、播放等任务。...在实际项目中,还需要考虑兼容性、性能优化、多线程处理等
问题
,以确保程序的稳定性和效率。
多媒体/流媒体开发
2,553
社区成员
20,278
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章