问题标签 [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 投票
1 回答
1095 浏览

directshow - 媒体基础与 DirectShow 和媒体容器。(WEBM 和 OGG THEORA)

为什么所有新的视频/媒体容器格式都对媒体基础提供很少的支持,而为 DirectShow 提供更多支持,因为知道 DirectShow 正在消亡。

0 投票
0 回答
266 浏览

visual-c++ - 枚举 MediaFoundation 接收器

我正在尝试在 MediaFoundation 中构建一个完整的拓扑,使用 BlackMagic Decklink 卡作为源和接收器。在 MediaFoundation 中,有一种简单的方法可以枚举来源:

但是对于我的生活,我找不到一种简单的方法来枚举机器上的水槽,而且我从官方文档中得到了空缺。有没有人有这方面的运气?

0 投票
1 回答
3480 浏览

c++ - 在 Windows 7 上使用 Windows Media Foundation 将原始音频文件转换为 AAC

感谢您花时间阅读我的问题。

我正在使用 Qt 和 windows API 开发一个 C++ 应用程序。

我正在以原始格式录制 10 秒的小音频文件中的麦克风输出,我想将它们转换为 aac 格式。

我尝试阅读尽可能多的内容,并认为从 Windows Media Foundation 转码 API 开始会是一个好主意。

问题是,我似乎无法在“CreateObjectFromUrl”函数中使用 .raw 或 .pcm 文件,所以我现在几乎被困在这里。它一直在失败。hr 返回码等于 3222091460。我尝试将 .mp3 文件传递​​给函数,当然它可以工作,因此不涉及 url-human-failure。

MFCreateSourceResolver 工作正常,但 CreateObjectFromURL 不成功:(

所以我有两个问题要问你们:

  1. 是否可以使用 Windows Media Foundation 将原始音频文件编码为 aac 文件?
  2. 如果是,我应该阅读什么来完成我想要的?

我想指出我不能只使用 ffmpeg 或 libav,因为我买不起我的软件的任何许可证,并且不希望它处于 GPL 许可证下。但是,如果有 Windows 媒体基础的替代方案可以将原始音频文件编码为 aac,我会很高兴听到它们。

最后,对不起我的英语不好,这显然不是我的母语,如果我让你流血了,我很抱歉。(如果我让你发笑,我会很高兴)

祝你今天过得愉快

0 投票
1 回答
333 浏览

video - 擦洗后不能再改变速率

简单场景:我想在视频中寻找到某个位置,然后播放它。

问题是当我第一次使用SetRate()速率设置为 0 以启用擦洗时,之后我无法再运行视频。似乎我无法将费率从 0 更改为其他任何值。我只能通过调用来进行帧步进Start()

当简单地运行视频时(不将速率设置为 0),随后的速率更改确实有效。我还注意到,如果我将速率设置为 0 并再次设置为正速率,而在 ( Start()) 之间没有实际擦洗,速率变化确实发生了!

为了退出“擦洗模式”,我需要做任何额外的工作吗?

0 投票
1 回答
2086 浏览

c++ - MKV 文件的开源 WinRT 库

我正在尝试在 WinRT 中播放 MKV 文件。有谁知道已经转换为与 WinRT 一起使用的库?如果没有,任何人都可以指出我开始使用一个好的图书馆的方向吗?迄今为止,我对 Media-Foundation 没有任何经验,因此将不胜感激。

0 投票
2 回答
5936 浏览

c++ - Windows Media Foundation 录制音频

我正在使用 Windows Media Foundation api 来枚举我的麦克风和可用的摄像头,它们都可以工作。

这是我的枚举代码:

要获取音频或摄像头捕获设备,我可以指定MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUIDorMF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID和,这没有问题,我可以获取设备的名称以及 IMFActivate。我有将网络摄像头录制到输出视频文件的代码,但是,我很难弄清楚如何将音频录制到文件中。我的印象是我需要使用 IMFSinkWriter,但我找不到任何使用音频捕获 IMFActivate 和 IMFSinkWriter 的示例。

我不是一个 Windows api 程序员,所以我确信有一个相当直截了当的答案,但 COM 的东西只是有点过头了。至于音频格式,我真的不在乎,只要它进入一个文件 - 可以是 wav、wma 或其他。即使我正在录制视频,我也需要将视频和音频文件分开,所以我无法弄清楚如何将音频添加到我的视频编码中。

0 投票
2 回答
1181 浏览

c++ - Windows Media Foundation 使用原始图像对视频进行编码

我正在做一个需要我录制网络摄像头、麦克风和屏幕的项目。我有网络摄像头录制,音频正在进行中,我偶然发现了CMonitor 包装器(我对其做了一些小的修改)以在指定的监视器上获取桌面的 RGB 图像(如果有多个监视器)。

如何将我的原始 RGB 帧推送到 Windows Media Foundation 中以编码为视频文件?我当前的视频编码使用的是这个 msdn 示例的略微修改版本,如果修改比编写新的类处理程序更容易的话。

或者,也许有某种媒体基础路线来记录我不知道的屏幕(这是可能的,我不是一个很棒的 win32 程序员)?

0 投票
1 回答
1034 浏览

windows - 使用 Media Foudation 的 WMV 编码:指定“B 帧数”

我正在使用 Media Foundation SDK 将视频编码为 WMV。我看到可以使用属性设置 B 帧的数量,但我不知道如何/在哪里设置它。

该属性称为 MFPKEY_NUMBFRAMES 并在此处进行了描述:http: //msdn.microsoft.com/en-us/library/windows/desktop/ff819354%28v=vs.85%29.aspx

我们的代码大致做了以下事情:

  • 调用 MFStartup
  • 调用一次 MFCreateAttributes,这样我们就可以设置 muxer、video 和 audio 属性
  • 配置上一步创建的 IMFAttributes,例如通过设置视频比特率: pVideoOverrides->SetUINT32(MF_MT_AVG_BITRATE, m_iVideoBitrateBPS);
  • 通过调用 IMFReadWriteClassFactory::CreateInstanceFromURL 创建接收器编写器
  • 对于每一帧,在接收器写入器上调用 WriteSample
  • 呼叫 MFShutdown

我是否应该在我还设置视频比特率的 IMFAttribute 上设置 b-frames 属性?

0 投票
1 回答
716 浏览

windows-8 - 使用C++代码直接在IMFMediaBuffer上画一个矩形

目前,我尝试从Media Foundation Transform修改示例。我倾向于实现以下目标

  • 在 C++ 代码中执行人脸检测。
  • 将检测到的人脸坐标传回 C# 代码。
  • 让 C# 在屏幕上绘制检测到的面部矩形。

我完成了第 1 步。但是,我被第 2 步所吸引。我面临着类似的问题:How to get feedback from MediaCapture API in Windows 8。我找不到办法让我的 C++ MFT 代码与 C# 代码交谈。

我在想另一种解决方法。使用 C++ 代码直接绘制一个矩形。IMFMediaBuffer

但是,我没有看到 Microsoft 提供这样的 API 来做到这一点。如果没有,我可以使用的正确方法是什么?

0 投票
1 回答
2187 浏览

c++ - 与媒体基金会的视频合成

我正在尝试将 2 个视频合成为一个(也是音频)并另存为文件。比如说,在最终视频的左半部分显示一个源视频,在右侧显示另一个源。任何编码都可以。不是 DirectShow。

我怀疑 IMFVideoMixerControl 可能与此有关,但不幸的是,我对 MF 太陌生,无法确定为实现这一目标而采取的正确步骤。如果您能给我一些指导或网络上有任何示例,请告诉我。谢谢您的帮助。