问题标签 [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.
c++ - DirectShow DVD 播放
我创建了一个自定义分配器/演示器,可以正常播放普通媒体文件。但是,当我使用以下代码尝试播放 DVD 时,它会因堆栈溢出异常而失败。
堆栈溢出在调用 control->Run() 后立即发生。这让我发疯,因为我确信我只是忘记了一些非常简单的事情。
谢谢。
directshow - DirectShow API 用于模拟调谐以放置频率?
我正在寻找 DirectShow 中只允许我推送频率的接口。该IAMTVTuner
界面允许您这样做,put_channel
但这需要预先调整您的卡。我只想指定要调谐的频率。这可以通过模拟调谐实现吗?(但是,您可以使用数字流的接口轻松完成)。
c# - 从 VOB(DVD) 文件中提取帧
我需要从视频文件生成缩略图,我使用 IMediaDet 从视频中获取帧,它不适用于 (*.vob) 文件 DVD,我如何在 C# 中从 DVD 获取缩略图..
c# - 最小化 DirectShow 内存消耗
因此,我有一个应用程序通过本地连接流式传输两个视频源。每个视频都有自己的过滤器图,将视频通过解码过滤器和 Infinite Pin Tee 过滤器,然后是 GMFBridge 过滤器,用于使用 WM ASF 过滤器打开/关闭录制。还有一个视频渲染器运行 tee 过滤器的不同输出。
现在,这一切都没有问题,但是整个应用程序的内存消耗远远超过 80 MB,并且在打开录制时可以达到 100 以上。
我想知道是否有任何技巧可以最大限度地减少 DirectShow 内存消耗?
我通过 DirectShowLib 互操作库使用 C# (.NET 2.0) 中的 DirectShow。
干杯
c++ - 自定义 WM 配置文件 - 编解码器问题
我创建了我的自定义 WM 编码器配置文件。我需要自定义的非标准 WM 配置文件的原因是我需要视频分辨率必须与输入视频流相同。我创建了下面的配置文件,但在我用它编码我的视频和音频后,加载时的 WMP 说未找到 WMV1 编解码器并提示我下载 WM 编码器编解码器。安装它们后,问题仍然存在。
c# - 在 C# 中显示来自原始未压缩字节源的实时视频:WPF 与 Win 表单
我有一个实时 16 位灰度视频流,它作为原始未压缩字节流(每像素 2 个字节,2^18 像素/帧,32 帧/秒)通过内存中的环形缓冲区推送。(这是来自科学级相机,通过 PCI 图像采集卡)。我想对视频进行一些简单的处理(剪辑动态范围、着色、添加叠加),然后使用 C# 在窗口中显示它。
我使用 Windows 窗体和 GDI 进行这项工作(对于每个帧,构建一个位图对象,根据我的后处理步骤写入原始 32 位 RGB 像素值,然后使用 Graphics 类绘制帧)。但这使用了我想用于其他事情的大量 CPU。所以我有兴趣将 WPF 用于其 GPU 加速的视频显示。(我也想开始使用 WPF 的数据绑定和布局功能。)
但我以前从未使用过 WPF,所以我不确定如何处理这个问题。我在网上找到的关于视频和 WPF 的大部分内容都涉及从磁盘读取压缩视频文件(例如 WMV),或者使用 Windows 已经理解的驱动程序层从消费级相机获取流。所以它似乎不适用于这里(但如果我错了,请纠正我)。
所以,我的问题:
是否有一种直接的、基于 WPF 的方式来从内存中的原始、未压缩字节播放视频(即使只是 8 位灰度或 24 位 RGB)?
我是否需要构建 DirectShow 过滤器(或其他 DirectShow/Media Foundation 类似的东西)才能在 GPU 上进行后处理?
此外,任何适用于这些任务的文档、示例、博客等的一般建议/建议将不胜感激。谢谢!
跟进:经过一些实验,我发现WriteableBitmap
它足够快,可以满足我的需求,并且非常容易正确使用:只需调用它WritePixels()
,任何Image
绑定到它的控件都会自行更新。 InteropBitmap
内存映射部分明显更快,但我必须将 p/invokes 写入 kernel32.dll 才能在 .NET 3.5 上使用它。
windows-7 - TrustedInstaller 正在阻止注册表写入 HKCR\DirectShow\MediaObjects\Categories
我正在尝试安装一个需要我写入的 DMO HKCR\DirectShow\MediaObjects\Categories\57f2db8b-e6bb-4513-9d43-dcd2a6593125
,此注册表路径受 TrustedInstaller 保护,而且这种保护似乎在 Windows 7 中是新的(它适用于以前的平台)。
我应该如何安装 DMO?
有很多地方建议获得此注册表项的所有权,但这感觉不对。
顺便说一句,使用样板 Wix3 来编写注册表值。
directx - 在自定义分配器中显示视频的活动窗口
我正在使用自定义分配器示例在面板上显示视频,对于某些文件,它会在某些活动窗口上播放视频,并且单独显示。我怎样才能避免打开这个不需要的窗口。
video - 自定义文件格式和编解码器?
我被编解码器问题搞砸了好几天,但仍然看不到大局。这是我第一次处理音频/视频格式和编解码器。所以我真的需要一些帮助。这是工作。
我正在编写几个负责对自定义 mpeg 文件进行编码和解码的组件。在标准解/压缩过程(音频和视频)之上,我将实现一些自定义解/加密。为此编写编解码器和软件库。列出了我无法弄清楚的事情。
- 对于 WMP,编解码器定位策略是什么。
- 例如,我如何区分我的自定义文件格式和 mpeg-3 格式。什么是标准和编程结构。(我真正搞砸的部分是容器格式,视频格式,fourcc代码等,把我逼死了)
- 对于 Windows 上的这项工作,您建议使用什么方法编写编解码器(DMO 或过滤器)
我希望在您的帮助下解决列出的问题。信息和一些有用的链接将不胜感激。除了 MSDN :) 因为我找不到我正在搜索的内容。
directshow - 如何使渲染过滤器不保持纵横比?
我编写了一个 DirectShow 视频转换过滤器,它插入在视频解码器和视频渲染过滤器之间。它将在输入图片周围添加一个相框。因此输出图片的大小和纵横比与输入图片不同。
不幸的是,我发现视频渲染会保持原来的纵横比,所以显示的带有相框的图片被拉伸了。在 GraphEdit 中,我找到了带有名为“保持纵横比”复选框的视频渲染过滤器。取消选中它,输出的图片将不会被拉伸。这就是我想要的。但我不知道如何在我的代码中做到这一点。我查询了接口 IVideoWindow 但发现它无法设置纵横比。所以我在这里寻求帮助。
谢谢。
谢谢你,耶利米莫里尔。是的,IVMRAspectRatioControl7/9 就是我想要的。但似乎,要获得接口,我必须首先获得过滤器 Video Mixing Renderer Filter 7/9。我想在“Video Renderer”过滤器而不是“Video Mixing Renderer Filter 9”上设置纵横比。
我不需要动态地改变格式。我的过滤器图是
无论解码器输出的分辨率如何,MyFilter 的输出分辨率始终与桌面屏幕相同。我发现,如果我使用智能连接,我会遇到我描述的问题。但是如果我手动将 MyFilter 连接到 VideoRenderer,则视频分辨率是正确的,即与屏幕相同。