问题标签 [ms-media-foundation]

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 投票
3 回答
384 浏览

windows - 是否有检测操作系统的宏...?

我打算使用 vista 之后可用的媒体基础 API 编写一段代码。我想在#if 块中添加代码,例如...

我找不到检测操作系统版本的宏。这通常是如何在 Windows 上完成的?我发现 _WIN32 和 _WIN64 可以检测 32 位和 64 位,但没有确定 api 可用性的宏。有没有更好的方法根据 vc.. 中的 API 可用性隔离代码?

谢谢,阿比奈。

0 投票
1 回答
13648 浏览

windows - DirectShow 与 Media Foundation 的视频捕捉?

我正在尝试在这两个 API 之间为视频捕获/监控/流式传输应用程序进行选择,但我不确定哪个是最好的选择。

一点背景:

  • 我需要它与各种视频采集卡/加密狗一起工作。
  • 该应用程序可能会使用 C++ 开发,因此本机 API 是必不可少的
  • 性能很重要,因为我需要处理多个视频流

有点谷歌搜索给我的印象是

  • MF 仅支持 Win 7 上的视频捕获
  • Directshow 得到更好的支持,但会过时
  • MF 可以在某些应用中提供更好的性能

MF 感觉是一个更好的选择,但我担心如果 MF 没有“赶上”并且 Directshow 仍然是首选的 API,最终会陷入技术死胡同。建议和建议,请...

0 投票
1 回答
481 浏览

winapi - 是否可以使用来自directshow 的windows 7 附带的h264 和aac 编码器?

我看到 windows 7 附带一个aac 编码器和一个h264 编码器。我正在编写一个需要进行视频编码的 directshow 应用程序。我想:“太好了!现在我不必许可视频编码器了!”,但后来我继续阅读,发现这些编码器使用新的 MFT api,这似乎与 directshow 不兼容,而且似乎没有像 DMO 一样成为一个包装过滤器。有没有办法让我在 directshow 中使用这些过滤器?也许有一个我没有找到的包装?也许我可以将这些过滤器作为 DMO 访问?

0 投票
2 回答
5821 浏览

windows-7 - 为 MPEG2 传输流构建图的最佳方法

在 Windows 7 上,Windows Media Player 非常支持 .ts 文件,因为 Windows Media Player 知道如何处理此类文件而无需任何额外的编解码器包。

但是,如果我尝试使用 graphedit “渲染” .ts 文件,它会抱怨它不知道如何为它构建图形。

Windows Media Player 使用什么方法对这些文件进行解复用/解码?是直播吗?Windows 媒体基金会?BDA?微软电视技术?统一调优模型?

无论他们使用什么方法,都可以作为 API 用于我的自定义应用程序吗?

0 投票
1 回答
1366 浏览

.net - 为 Media Foundation 生成托管包装器

MF 团队提供了用 C# 编写的 MFManagedEncode,在源代码中他们为许多 MF 接口创建了包装器,但不是所有接口,是否有任何工具可以自动生成其余接口的包装器?如果没有,我需要自己编写包装器,但是我在哪里可以找到 COM 的 GUID 和接口的 IID?MSDN刚才提到接口属于哪个lib,比如IMFMediaStream接口的IID是什么?

0 投票
1 回答
1525 浏览

c++ - 获取视频文件的原生视频分辨率

我目前正在为 Media Foundation 播放器编写一些自定义 EVR。

到目前为止一切正常,但我需要找到我正在渲染的视频文件的原始分辨率。

我尝试使用 IBasicFilter2 接口来使用 getVideoSize、get_VideoHeight 或其他 get_SourceWidth 等...但它总是返回给我一个 E_NOINTERFACE...

那么有人有办法获得视频文件的分辨率吗?即使它有一个漂亮的灯光库......只是大小没有别的......Windows设法在文件浏览器中找到它,但我完全无法从代码中获取它......

谢谢!

0 投票
2 回答
5602 浏览

windows - Simulating a webcam stream

Is it possible to simulate a web-cam output so that other programs that use web-cams (for example Skype) will recognize it as a real web-cam?

0 投票
4 回答
2695 浏览

directshow - 使用 Media Foundation 解码 MPEG1/2 视频

我正在使用 Media Foundation 播放视频。在 Windows 7 上,一些用 Mpeg1/Mpeg2 PS 和 Windows Media Player 编码的视频可以播放它们,但 Media Foundation 不能(我尝试注册一个存根 MPEG1Source,但它仍然无法正常工作)。我注意到其中一些文件可以用 directshow 播放,但不能用 Media Foundation 播放(根本无法打开)。我猜“媒体播放器”不只使用媒体基金会?

是否可以使用 Media Foundation 播放这些文件?如果不是,媒体播放器如何工作?非常感谢。

PS我已经阅读了windows SDK并注册了一个“假”mpeg1解码,它显示了一个没有时间码的空白帧。如果 windows 媒体播放器可以解码,为什么我们需要一个假的 mpeg1 解码器?

本主题与 为 MPEG2 传输流构建图形的最佳方法有关

0 投票
1 回答
1914 浏览

c# - VMR9 与 EVR:如何将 ImageCompositor 与 EVR 一起使用?

我编写了一个 PixelShader 编译器/测试器,它可以在使用 DirectShow.Net + VMR9 播放的图像或视频源上实时工作。

一切都很好,直到我决定将它作为一个真正的视频播放器试一试,并开始调整它的每一点以使其正常工作(标题等)。

然后我发现在带有 ATI gpus 的 Windows7 上,视频非常像素化(插值很差)。解决方案是使用 EVR。我做到了。除了背景闪烁和调整大小缓慢的一些小故障之外,我将尝试使用自定义演示器解决它,这一切看起来都不错。

但...

我失去了对输出视频应用像素着色的能力,因为 EVR FilterConfig 接口上没有 SetImageCompositor 方法。

这是 EVR 界面:

这是 VMR9 接口:

我一直在使用这种方法和自定义图像合成器来应用像素着色器:

我现在不可以...

使用:VS2010、C#、DirectShow.NET、Mediafoundation.NET、托管 DX9。

这个问题的解决方案是什么?有关如何使用 EVR 执行此操作的任何指南?

非常感谢你!

0 投票
1 回答
986 浏览

c# - Vista / Windows 7 中的字幕透明度

我在我的一个播放器中实现了 EVR 渲染器,以处理 Windows Vista+ 上糟糕的大小调整质量,但遇到了问题......

我的 EVR 有字幕叠加问题:

试着看看我在说什么- 你必须在选项中设置 EVR。

我使用它来将 32 位 alpha 位图应用到 VMR9,使用 DirectX 表面:

然而,现在 MediaFoundation.NET 项目没有要设置的 alphaBmp.pDDS 指针,所以我不能使用 directdraw 表面,需要使用 GDI(如果有人有办法做到这一点,它会很酷)。但是对于 GDI,我不能使用 32 位 alpha 位图来实现真正的透明度 - 我用这种方法只能获得 1 位透明度:

所以问题是:

  • 如何使用 DirectDraw 表面在 EVR 视频上混合位图或
  • 如何在没有 DirectDraw 的情况下混合半透明位图?

非常感谢!