问题标签 [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.
directshow - 媒体基础与 DirectShow 和媒体容器。(WEBM 和 OGG THEORA)
为什么所有新的视频/媒体容器格式都对媒体基础提供很少的支持,而为 DirectShow 提供更多支持,因为知道 DirectShow 正在消亡。
visual-c++ - 枚举 MediaFoundation 接收器
我正在尝试在 MediaFoundation 中构建一个完整的拓扑,使用 BlackMagic Decklink 卡作为源和接收器。在 MediaFoundation 中,有一种简单的方法可以枚举来源:
但是对于我的生活,我找不到一种简单的方法来枚举机器上的水槽,而且我从官方文档中得到了空缺。有没有人有这方面的运气?
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 不成功:(
所以我有两个问题要问你们:
- 是否可以使用 Windows Media Foundation 将原始音频文件编码为 aac 文件?
- 如果是,我应该阅读什么来完成我想要的?
我想指出我不能只使用 ffmpeg 或 libav,因为我买不起我的软件的任何许可证,并且不希望它处于 GPL 许可证下。但是,如果有 Windows 媒体基础的替代方案可以将原始音频文件编码为 aac,我会很高兴听到它们。
最后,对不起我的英语不好,这显然不是我的母语,如果我让你流血了,我很抱歉。(如果我让你发笑,我会很高兴)
祝你今天过得愉快
video - 擦洗后不能再改变速率
简单场景:我想在视频中寻找到某个位置,然后播放它。
问题是当我第一次使用SetRate()
将速率设置为 0 以启用擦洗时,之后我无法再运行视频。似乎我无法将费率从 0 更改为其他任何值。我只能通过调用来进行帧步进Start()
。
当简单地运行视频时(不将速率设置为 0),随后的速率更改确实有效。我还注意到,如果我将速率设置为 0 并再次设置为正速率,而在 ( Start()
) 之间没有实际擦洗,速率变化确实发生了!
为了退出“擦洗模式”,我需要做任何额外的工作吗?
c++ - MKV 文件的开源 WinRT 库
我正在尝试在 WinRT 中播放 MKV 文件。有谁知道已经转换为与 WinRT 一起使用的库?如果没有,任何人都可以指出我开始使用一个好的图书馆的方向吗?迄今为止,我对 Media-Foundation 没有任何经验,因此将不胜感激。
c++ - Windows Media Foundation 录制音频
我正在使用 Windows Media Foundation api 来枚举我的麦克风和可用的摄像头,它们都可以工作。
这是我的枚举代码:
要获取音频或摄像头捕获设备,我可以指定MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID
orMF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
和,这没有问题,我可以获取设备的名称以及 IMFActivate。我有将网络摄像头录制到输出视频文件的代码,但是,我很难弄清楚如何将音频录制到文件中。我的印象是我需要使用 IMFSinkWriter,但我找不到任何使用音频捕获 IMFActivate 和 IMFSinkWriter 的示例。
我不是一个 Windows api 程序员,所以我确信有一个相当直截了当的答案,但 COM 的东西只是有点过头了。至于音频格式,我真的不在乎,只要它进入一个文件 - 可以是 wav、wma 或其他。即使我正在录制视频,我也需要将视频和音频文件分开,所以我无法弄清楚如何将音频添加到我的视频编码中。
c++ - Windows Media Foundation 使用原始图像对视频进行编码
我正在做一个需要我录制网络摄像头、麦克风和屏幕的项目。我有网络摄像头录制,音频正在进行中,我偶然发现了CMonitor 包装器(我对其做了一些小的修改)以在指定的监视器上获取桌面的 RGB 图像(如果有多个监视器)。
如何将我的原始 RGB 帧推送到 Windows Media Foundation 中以编码为视频文件?我当前的视频编码使用的是这个 msdn 示例的略微修改版本,如果修改比编写新的类处理程序更容易的话。
或者,也许有某种媒体基础路线来记录我不知道的屏幕(这是可能的,我不是一个很棒的 win32 程序员)?
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 属性?
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 来做到这一点。如果没有,我可以使用的正确方法是什么?
c++ - 与媒体基金会的视频合成
我正在尝试将 2 个视频合成为一个(也是音频)并另存为文件。比如说,在最终视频的左半部分显示一个源视频,在右侧显示另一个源。任何编码都可以。不是 DirectShow。
我怀疑 IMFVideoMixerControl 可能与此有关,但不幸的是,我对 MF 太陌生,无法确定为实现这一目标而采取的正确步骤。如果您能给我一些指导或网络上有任何示例,请告诉我。谢谢您的帮助。