问题标签 [directshow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
5939 浏览

video - 如何对 DirectShow 图形进行逆向工程?

我有一个 DirectShow 图来从网络流中渲染 MPEG2/4 电影。当我通过手动连接引脚来组装图形时,它不会呈现。但是当我在 GraphBuilder 上调用 Render 时,它渲染得很好。

显然,我没有在 GraphBuilder 正在执行的图中的某些过滤器上执行一些设置步骤。

有没有办法在 GraphBuilder 组装图形时查看调试输出?

有没有办法转储工作图以查看它是如何组合在一起的?

解开 DirectShow 盒子中的谜团还有其他想法吗?

谢谢!-Z

0 投票
3 回答
6302 浏览

video - 枚举 Windows 上所有可用视频编解码器的最佳方法?

我正在寻找一种枚举 Windows XP/Vista 机器上所有视频编解码器的好方法。

我需要向用户展示一组视频编解码器,包括压缩器和解压缩器。输出看起来像

我遇到的问题是没有可靠的方法来捕获系统可用的所有解码器。例如:

  1. 您可以使用 DirectShow 枚举所有解压缩器,但这不会告诉您有关压缩器(编码器)的任何信息。
  2. 您可以枚举所有 Video For Windows 组件,但您不会得到任何指示,它们是编码器还是解码器。
  3. 有 DirectShow 过滤器可以很好地为您完成这项工作(例如 Motion JPEG 过滤器),但没有迹象表明特定的 DirectShow 过滤器是“视频解码器”。

是否有人使用任何 Windows API 找到了针对此问题的通用解决方案?Windows Vista Media Foundation API是否解决了这些问题?

0 投票
2 回答
2651 浏览

windows - 如何从 Wave Out 中捕获 PCM 数据

如何以编程方式捕获音频?我正在实现一个在网络上实时流式传输桌面的应用程序。视频部分完成。我需要实现音频部分。我需要一种从声卡获取 PCM 数据以馈送到我的编码器的方法(使用 Windows 媒体格式实现)。

我认为答案与 Win32 API 中的 openMixer()、waveInOpen() 函数有关,但我不确定我该怎么做。

如何打开必要的通道以及如何从中读取 PCM 数据?

提前致谢。

0 投票
2 回答
429 浏览

audio - 个人 DirecShow 在音频渲染上的优点

我的电脑有两个外部声卡和一个在带有 windows vista 的主板上。在 Vista 中,它看到同一个声卡的两个实体,一个数字输出和一个模拟输出。

当我尝试播放带有数字音频的视频文件(例如 dvd)时,它选择“默认 DirectSound”,而我希望它使用“数字输出 Auzentech ”。所以我想很容易,我只是将“数字输出 Auzentech”的优点更改为高于其他值的值,因此当应用程序尝试构建播放图时会选择它。

我遇到的问题是所有音频实体都具有相同的 ID,因此通过更改“数字输出 Auzentech”,“默认直接声音”获得相同的优点。我相信已经在 google-dry 上搜索过有关优点、directshow 和 audiorenders 的信息,但仍然没有找到答案。

也许在这里闲逛的一些聪明人可以帮助我

(我使用的工具是 Vista Ultimate 32 位上的 GSpot 和 GraphEdit)

0 投票
1 回答
5172 浏览

directshow - 用于自定义解码器的 DirectShow 中的自动 YUV -> RGB

在网上搜索了几个小时后,我非常渴望找到解决方案。我已经在 DirectShow 中启动并运行 OGG Theora 解码器,它输出 YV12 和 YUY2 颜色模型。

现在,我想为此输出制作一个 RGB 像素操作过滤器并将其处理到视频渲染器中。根据thisthis,它应该非常简单和透明,但事实并非如此。

例如,我在CheckInputType()这个检查中实现了:

我希望它在 Theora 和我的解码器之间插入 MSYUV 并为我完成这项工作(即将其转换为 RGB)。问题是我每次都出错(在 GraphEdit 应用程序中)。而且我 100% 确定它是 YV12 作为输入(在调试器中检查)。我能想到的唯一解释是提到了 AVI 解压缩器,但没有关于它的更多信息。

  • 这是否意味着如果我想获得这个自动功能,我必须使用 AVI 容器?
  • 奇怪的是它适用于例如 WMV 视频(在他们的输出上带有 YUV),只有这个 OGG 解码器有问题。所以这可能是一个问题,这个OGG解码器错过了什么?

太糟糕了,MSYUV 过滤器不能用作颜色空间转换器,即在 GraphEdit 中可见且可直接使用...

我很欣赏这方面的任何提示,编程自己的 YV12 -> RGB 转换器我作为最后的手段。

0 投票
6 回答
19237 浏览

c# - 如何从 C# 中的图像目录创建视频?

我有一个尺寸相同的位图目录。我想将这些位图转换成视频文件。我不在乎视频文件(编解码器)是 wmv 还是 avi。我唯一的要求是我指定帧速率。这不需要是跨平台的,仅适用于 Windows(Vista 和 XP)。我已经阅读了一些关于使用 Windows Media SDK 或 DirectShow 的内容,但没有一篇关于提供代码示例的明确说明。

任何人都可以提供一些见解或一些有价值的资源来帮助我在 C# 中做到这一点吗?

0 投票
1 回答
2300 浏览

wpf - 如何在 WPF 中预览 Windows Media Encoder 会话?

此代码适用于 Windows 窗体应用程序(它显示预览),但不适用于 WPF 应用程序。

我尝试使用 WindowsFormsHost 控件来获取要传递的句柄(如示例中所示),但仍然没有运气。

0 投票
2 回答
1609 浏览

c# - 如何使控件透明地覆盖 DirectShow 视频?

我有一个控件 VideoControl,它使用 DirectShow 显示视频 - 它被设置为 IVideoWindow 的所有者。我有另一个控件,AreaControl,它应该在视频控件上显示一个虚线矩形。使用 SetStyle(ControlStyles.SupportsTransparentBackColor, true) 将 AreaControl 设置为透明。如果我将 AreaControl 放在任何其他控件上,它会按预期工作,在其后面的控件上显示一个虚线矩形。但是,当我将虚线矩形控件放在视频控件上时,AreaControl 会被 VideoControl 的 BackColor 填充。

我需要做什么才能通过 AreaControl 显示视频,并在其上覆盖虚线矩形?有没有办法让 VideoControl 用视频绘制自己,而不仅仅是绘制它的 BackColor?

0 投票
1 回答
1289 浏览

.net - VMR9Allocator (DirectShow .NET + SlimDX)

我试图用 SlimDX 而不是 MDX 转换和运行 DirectShow .NET 的 VMR9Allocator 示例。当它到达这条线时我得到了一个例外

在 Allocator.cs 的 AdviseNotify 方法中。

例外是

不支持这样的接口

, hr 回报是

0x80004002

.

该示例在 MDX 上运行良好,而且我的 SlimDx 也可以正常工作,因为我已经使用它编写了另一个 3d 应用程序,工作正常。

我似乎无法找出问题所在,谷歌搜索也没有帮助。显然没有多少人使用这种组合,而且我能找到的也不是真正遇到这个问题。

注意:两周前我在 gamedev.net 上问过同样的问题,到目前为止还没有答案。

0 投票
2 回答
1506 浏览

directshow - 除了 DirectShow 之外,.NET 的标准网络摄像头接口?

我希望能够通过 .NET 2.0(或 3.5,如有必要)使用网络摄像头拍摄静止图像。我知道我可以使用 DirectShow,但这似乎是一个非常大的学习曲线。

是否有一个简单易用的 OCX 或可以与大多数标准网络摄像头一起使用的库?