DllRegisterServer返回0x80070005
我编写了一个基于 H.264 directshow 的解码器.我通过运行“regsvr32.exe diavc.ax"来注册它.它成功了.但是一些用户报告它失败并显示以下消息: 模块“diavc.ax"已加载但对“DllRegisterServer"的调用失败,错误代码 0x80070005. 我该如何解决这个问题? 接下来的代码是“DllRegisterServer",很简单. STDAPI DllRegisterServer() { 返回 AMovieDllRegisterServer2( TRUE ); } 解决方案 你的依赖是什么? 您是否静态链接到 CRT 以避免对 CRT DLL 的依赖? 如果他们运行的是 Vista/Windows 7,请确保他们提升到 UAC 管理员权限 然后再尝试注册.
642 2022-07-19
编程技术问答社区
如何获得摄像机的所有支持帧
大家好, 我有一个问题. 我想通过 directshow 或一些技术获得相机的所有支持 fps,但现在我无法获得所有支持 fps. 我 可以获得最大和最小 fps. 知道的请帮帮我,谢谢~ 解决方案 MSDN: IAMVideoControl 接口控制某些视频捕获操作,例如枚举可用帧速率和图像方向.
178 2022-07-19
编程技术问答社区
DirectX最终用户运行时脱机安装程序链接
朋友们, 请提供适用于 Windows 7 的 DirectX 终端用户运行时离线安装程序的链接. 解决方案 最新的DirectX End-用户运行时(2010 年 6 月) (又名“DXSETUP")可在http://www.microsoft.com/en-us/download/details.aspx?id=8109.这包括一些更新在 DirectX SDK(2010 年 6 月)发布后与 的刷新同步DirectX 最终用户 Web 安装程序(2010 年 6 月)(又名“DXWSETUP")). 也就是说,鉴于您在 DirectShow 开发论坛上发帖,我怀疑您假设“DirectX 最终用户运行时"是实际上安装DirectShow.它没有.事实上,它并没有真正安装 任何 DirectX.这个名字是在安装 DirectX 的时候留下的,但是从 Windows XP Service Pack 2、Windows Server 2003 SP1 和 Windo
750 2022-07-19
编程技术问答社区
虫子???在C中实现IUnknown++
大家好: 请参考: http://msdn.microsoft.com/en-us/library/office/cc839627.aspx 我猜有一个错误: InterlockedIncrement(m_cRef); 应该是 InterlockedIncrement(&m_cRef); 和 ULONG ulRefCount = InterlockedDecrement(m_cRef); 应该是 ULONG ulRefCount = InterlockedDecrement(&m_cRef); 请确认... 干杯 裴 解决方案 是的,打错了. 虽然技术上来说很有趣,但由于没有显示 m_cRef 的声明,这个特定的例子仍然是正确的(仅考虑一点棘手的想法)假设 m_cRef 是用一个类实现的支持隐式将运算符转换为 volatile unsigned long* 和 ULONG,如下所示: #include 类
80 2022-07-19
编程技术问答社区
除之外的媒体文件。avi。wmv和。英里/加仑
嗨, 感谢本板上的大家,我现在有一个应用程序 Uisng DirectShow C++ 编程,它非常好地从上述类型的媒体文件中抓取帧和配乐剪辑.它适用于 AVI、WMV 和 MPG(也来自 MP2 和 MP3 的声音). 继续 - 谁能告诉我我的过滤器图表应该能够处理哪些其他类型的视频媒体文件?ASF 是从 Directshow 文件告诉我的内容中浮现出来的——还有其他的吗?有谁知道我在哪里可以获得这些其他格式的一些示例? 有一个文件“rendering.asf".在 SDK 树中,但是当我尝试使用媒体播放器(我在 XP Pro 上使用 V11)打开它时,我收到需要插件的消息: "播放此文件需要音频编解码器. 要确定此编解码器是否可以从 Web 下载,请单击 Web 帮助" 我单击该按钮转到该网站,但没有找到任何有用的内容. 如有任何指导,我们将不胜感激. 解决方案 ASF 和 WMV 是一回事.严格来说,ASF 是容器格式,而 WMV 是视
154 2022-07-19
编程技术问答社区
连接到没有颜色空间转换器的视频混合渲染器时出现问题
你好, 我开发了用于显示 JPEG 图像的 Directshow 过滤器. 我的过滤器结构是 source ->解析器->解码器->颜色空间转换器 ->视频混合渲染器. 我的要求是以 rgb 和 yuv 格式显示图像,并且我能够以子类型 MEDIASUBTYPE_RGB24 的 rgb 格式显示图像.但我无法以 YUV 格式显示图像,因为颜色空间转换器不支持 YUV 格式. 当我尝试使用 YUV 格式将解码器连接到 VMR 时,它返回 VFW_E_CANNOT_CONNECT(找不到中间过滤器的组合来建立连接.)" 你能告诉我找到解决办法的方法吗? 非常感谢 Paddu 解决方案 使用Connect() 方法连接解码器&VMR,它会自动添加中间过滤器.
162 2022-07-19
编程技术问答社区
从网络摄像头捕获图像
您好,我是 DirectShow 编程的新手.我正在尝试创建一个没有界面的非常基本的应用程序.这个想法是每 10 分钟捕获一张(静止)图像,但我无法从我的网络摄像头获取图像.我已经下载了示例,但没有进一步了解,因为这些示例具有界面或正在捕获视频而不是图像.这是应该捕获图像的代码,我从那里卡住了..: (我想让这个函数返回一个位图) //Verbinding met de camera private void SetupGraph(DsDevice pDevice) { int hr; IBaseFilter capFilter = null; IBaseFilter iSmartTee = null; ISampleGrabber SampleGrabber = null; IBaseFilter SampleGrabberBase = null; //Connect Pins IPin pCamCapture; IPin pSTIn; IPin
184 2022-07-19
编程技术问答社区
waveoutwrite函数是将WAVEHDR*复制到设备缓冲区还是将其用作参考?
你好, 我正在使用 mmsystem 的 wavout* 函数进行音频播放. 我想在 waveOutWrite 函数之后立即删除分配的堆.我每次都为新块分配 512 * 16 大小的新堆,我想在 waveOutWrite 之后删除它,以解决内存管理问题. 如果我这样做,设备可以吗?或者 waveOutWrite 将使用我传递给它的 waveHdr 指针的引用,因此我需要等待 直到 WOM_DONE 回调删除分配的缓冲区? 为了反混蛋音频播放,我每次都为新块分配新堆. 谢谢. 解决方案 无论使用何种通知机制,都必须等到驱动程序播放完缓冲区. 分配内存是一项非常昂贵的操作.每次分配一个新缓冲区会比使用预分配缓冲区池慢.
288 2022-07-19
编程技术问答社区
在DirectX过滤器图形中将位图从自下而上更改为自上而下
嗨 我正在创建一个基于 IGraphBuilder 的 DirectX 图形,我在其中添加了一个 .wmv 文件作为源过滤器.然后我将源过滤器连接到接受以下内容的 ISampleGrabber: AM_MEDIA_TYPE mt_vid = {0}; mt_vid.formattype = FORMAT_VideoInfo; mt_vid.majortype = MEDIATYPE_Video; mt_vid.subtype = MEDIASUBTYPE_RGB32; hr = pVideoGrabber->SetMediaType(&mt_vid);//pVideoGrabber = ISampleGrabber 但是,在我的视频 ISampleGrabber 中,我收到了一个自下而上的 RGB32 位图,而不是我将位图传递给(另一个视频编码器 API)的 API 所需的自上而下的位图. 我尝试在返回 VIDEOINFOHEADER 的 ISample
96 2022-07-19
编程技术问答社区
live source筛选器
亲爱的, 我有一个关于 推送源过滤器的问题.如果源过滤器正在接收来自 的实时流 网络,FillBuffer 方法是不是每次收到数据包时都会调用? 我想编写一个实时源过滤器,但只设法更改了球示例中的代码. 所以它是一个推送源过滤器,而不是一个实时源过滤器,对吗?如何编写实时源代码 过滤? 另一个问题是:我实际上是使用这个推送源过滤器来接收来自网络的数据, 并使用 FillBuffer 将数据转换到下游.我不做任何时间戳,是 这对吗?我的程序有时运行良好,有时运行混乱.是关于 FillBuffer 的吗 每次接收数据包时都不会触发方法? 提前致谢, Alex 解决方案 HRESULT JrtpStream::FillBuffer(IMediaSample *pms){ session.BeginDataAccess();//检查传入的数据包 if (session.GotoFirstSourceWithData()) {
130 2022-07-19
编程技术问答社区
如何在C中使用ETW实现远程日志记录#
嗨, 我们有在 C# 中实现了 ETW 日志记录,如果我们将日志放在本地机器上,它工作正常.C# 代码对于本地机器如下: private void button1_Click(object sender, EventArgs e) { var provider = new EventProvider(new Guid("{CDDA7178-6A9D-4C86-860B-4074116458BC}")); System.Diagnostics.Eventing.EventDescriptor 描述符; 未选中 { // EventDescriptor(int id, byte version, byte通道、字节级别、字节操作码、int 任务、长关键字); 描述符 = 新 System.Diagnostics.Eventing.EventDescriptor(0
188 2022-07-19
编程技术问答社区
源筛选器数据流
嗨, 我写了很多 dshow 过滤器,我知道一些解释数据流的网站,例如: http://msdn.microsoft.com/en-us/library/dd388376%28VS.85%29.aspx 但我仍有未解决的问题. 例如使用基于 CSourceStream 类的推送源过滤器,我不明白 fillbuffer 是如何工作的. 我认为 fillbuffer 将填充在 DecideBufferSize 中确定的缓冲区,下游过滤器将在单独的线程中清空该缓冲区. 但经验告诉我,fillbuffer 和后流过滤器是按顺序工作的. 知道这到底是怎么工作的吗? 解决方案 不知道你有没有看过这个http://msdn.microsoft.com/en-us/library/dd757807(VS.85).aspx ,它谈到了源过滤器和 CSourceStream.
184 2022-07-19
编程技术问答社区
有人知道如何接收IdvbTeletextDescriptor/IDVBSubtitleInigDescriptor吗?
你好 我的项目正在使用 BDA 过滤器连接到 DVB-T 调谐器并接收视频/音频流 另外我想知道如何接收字幕或图文数据 有没有人可以帮助找到如何连接到这些接口的方法? 解决方案 自从问题与 DirectShow Development 有关.“DirectShow Development"的专家更多了论坛. 谢谢供您理解! 问候, Lucy
100 2022-07-19
编程技术问答社区
为directshow创建新媒体类型
我正在尝试使用 directshow 来支持我的自定义媒体类型. 我开发了一个 myparser.au 过滤器,它将从上游获取 {&MEDIATYPE_Stream, &MEDIASUBTYPE_NULL} 并进行一些解析以确保这是我的媒体类型. 在graphedit中,我可以使用“file source async"打开我的媒体文件(test.abc).过滤器,并将其指向我的“myparser";筛选. 问题在于如何使图形自动使用“文件源异步".打开我的文件并将其指向 myparser?? 我尝试在 regedit 中添加 MEDIATYPE/extensions/.abc 使用 myparser 的 guid 添加源过滤器?(虽然我知道它不是源过滤器,并且不起作用.) 1)那么我可以跳过编写自己的源过滤器的过程并使用“文件源异步"吗?取而代之? 2) 如果 Q1 是,我应该在 .abc 扩展名的注册表中使用哪个 GUID 3)如何让graph
80 2022-07-19
编程技术问答社区
wav目标滤波器
你好! 我正在尝试使用 wavdest 过滤器(源代码位于 windows sdk 的示例目录中;http://msdn.microsoft.com/en-us/library/dd390969%28v=vs.85%29.aspx).项目已经搭建成功(没有ax文件只有dll),我注册了wavdest.dll使用 regsrv32 文件,但我无法使用 cocreateinstance 创建过滤器.为什么? (我使用的是在示例目录中过滤器的源代码中定义的 clsid;我是 Visual Studio 2010;过滤器是在发布模式下构建的). 请帮忙! 谢谢!:) 解决方案 CoCreateInstance() 返回一个 HRESULT. 无论如何,最常见的原因是 Win32 进程无法加载 Win64 DLL,反之亦然.
100 2022-07-19
编程技术问答社区
MPEG解复用器和ffdshow无法在传输流中呈现h.264
我有一个包含 h.624 视频和 AAC 音频流的 mpeg2-TS 文件.我需要以推送模式呈现此媒体文件.我希望只使用免费软件过滤器. 我使用 MPEG 解复用器 (Microsoft) 对文件进行解复用,并使用 ffdshow 音频和视频解码器进行解码.MPEG Demuxer 以及一些许可的解码器工作正常.带有其他解复用器(gabest 源过滤器)的 ffdshow 过滤器也运行良好.但是他们在一起是行不通的. 我觉得这可能是由于从分路器发出的不同数据或分路器的输出引脚上声明的媒体信息不同. 假设后来是我改变媒体信息的原因.在尝试了各种媒体类型的输出引脚解复用器之后,我能够得到一些失真的视频.但是使用相同的媒体信息和其他一些解复用器,视频更加失真. 另一方面,我使用 TSMuxer.exe 将 TS 文件转码回相同的格式.尽管 TS 文件的所有参数和属性都相同,但大小略有增加.但是 MPEG demuxer 和 ffdshow 能够渲染视频(不是音频). 我
86 2022-07-19
编程技术问答社区
在YUV中覆盖在位变换过滤器图形
我正在构建一个小的覆盖层 in-place 变换过滤器 (CTransInPlaceFilter) 来取乐.它应该能够在视频上显示文本(字幕). 我偶然发现了一个问题:如何在 YUV 中绘图? 将 YUV 转换为 RGB 非常昂贵,这就是为什么我想以视频使用的格式进行绘制.这样我就不需要做任何转换了. 我在互联网上没有找到任何关于此的信息. 这不是其他叠加过滤器的做法吗? 他们使用其他技术吗? 如果您知道更好的方法,请分享. 任何和所有信息都会有所帮助. 解决方案 如果你说的绘图是指使用 GDI,那么 GDI 只支持 RGB. DirectDraw 和 Direct3D(可能还有 GDI+?)支持 YUV. 其他播放器有一个用于视频渲染器的自定义分配器呈现器,以便他们可以使用高质量的 DD/D3D 绘图.过滤器有自己的自定义绘图代码.
88 2022-07-19
编程技术问答社区
C++-当视频处于暂停模式且程序窗口未聚焦时,视频消失(仅限Vista和Windows7)
当我暂停播放视频文件时,点击在桌面的某个区域(程序窗口之外的区域),必须保留在桌面上的图片暂停模式期间的视频屏幕 - 消失.当我单击程序窗口区域时,它会返回. 这个问题只在Vista和Windows7上重现 解决方案 更多细节,这是你的应用程序还是播放器,视频渲染器的版本是什么,它的操作模式(例如窗口/无窗口),它是在特定的工作站上进行还是在任何提到的操作系统上进行?
106 2022-07-19
编程技术问答社区
如何逐一播放MPTS视频
大家好, 我想一一播放MPTS视频流,请给我一些建议和代码片段. 谢谢, Balamurugan R 在此先感谢 Bala :-) 解决方案 嗨... 您必须使用支持 MPTS 的 Demux(解复用器).拆分每个音频和视频并播放它们. 检查“Mpeg2 Demultiplexer": http://msdn.microsoft.com/en-us/library/ms787308%28v=VS.85%29.aspx 要获取 PSI(PAT 和 PMT 表),请参阅此链接. http://msdn.microsoft.com/en-us/library/ms783741%28v=VS.85%29.aspx 您可以使用 VMR9 视频渲染器在一个表单中分别渲染它们(每个都在一个单独的矩形中) 我这样做了...但是我还没有找到合适的 Demux...
92 2022-07-19
编程技术问答社区
将两个音频源多路复用到单个avi文件中
我正在尝试复用两个音频源. 1.从一个 mpeg 视频文件中,使用 splitter 将视频和音频进行拆分,并将音频传递给 AVI mux. 2.第二个音频源来自内部麦克风并将其传递给 AVI 多路复用器. 最后写入文件. 这很好用.我的目标是将一个源写入左通道,另一个写入右通道. 所以我在两个源的 AVI 多路复用器之前添加了样本抓取器,并使用回调方法抓取样本以平移它. 但是当我这样做时,只有连接到 AVI 多路复用器的第一个源被写入输出文件. 我不知道我错过了什么. 非常感谢任何帮助. 解决方案 你首先应该验证的是你的采样率和通道数量尝试复用是相同的,例如.如果一个是样本@48Khz,另一个是样本@22Khz,你应该 重新采样到一个共同的采样率. 上采样 可以通过线性插值和低通滤波器来完成 可以通过应用低通滤波器( 避免频率折叠 )然后进行线性插值来完成下采样. 检查 Keizer 过滤器的重采样,它健壮且高效
96 2022-07-19
编程技术问答社区