问题标签 [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 回答
1066 浏览

wpf - 与 D3DImage + DirectShow (VMR9) 相比,D3DImage + Media Foundation (EVR) 会提供更好的性能吗?

我正在使用 WPF 和 DirectShow 开发视频应用程序。使用 D3DImage 和自定义分配器呈现器实现了在播放区域上提供覆盖的能力,因此我的 CPU 负载很高(在 20 个流,fps = 2 时为 80%)。与 D3DImage + DirectShow (VMR9) 相比,D3DImage + Media Foundation (EVR) 会提供更好的性能吗?

0 投票
1 回答
843 浏览

c++ - 动态生成数据以供 Media Foundation 使用

我正在尝试通过使用内存流作为源流将动态生成的数据馈送到 Media Foundation Source Reader:

但是,我被上面的错误困住了。为什么这无效,我该如何纠正?或者,是否有更好的方法来创建包含动态数据的媒体基础管道?

0 投票
2 回答
1897 浏览

windows-7 - 使用 SinkWriter 编码视频时更改 h.264 质量

我正在使用 Microsoft Media Foundation 对 H.264 视频文件进行编码。

我正在使用 SinkWriter 创建视频文件。输入是一个缓冲区 ( MFVideoFormat_RGB32),我在其中绘制帧,输出是一个MFVideoFormat_H264.

编码有效,它会创建一个包含我的帧的视频文件。但我想设置该视频文件的质量。更具体地说,我想CODECAPI_AVEncCommonQuality在 H.264 编码器上设置属性。

为了获得 H.264 编码器的句柄,我在 SinkWriter 上调用GetServiceForStream 。然后我设置CODECAPI_AVEncCommonQuality属性。

问题是我的属性更改被忽略了。如文档中所述:

要在 Windows 7 中设置此参数,请在调用 IMFTransform::SetOutputType 之前设置该属性。设置输出类型后,编码器会忽略更改。

问题是我没有手动创建 H.264 编码器。我在 SinkWriter 上设置了输入和输出类型,SinkWriter 会自动创建 H.264 编码器。一旦它创建了编码器,它就会调用该IMFTransform::SetOutputType方法,我不能再更改该CODECAPI_AVEncCommonQuality属性。文档还说在 Windows 8 中不会忽略属性更改,但我需要在 Windows 7 上运行它。

您知道在 Windows 7 上使用 SinkWriter 时如何更改编码文件的质量吗?

PS:有人在msdn论坛上问过同样的问题,他似乎没有得到答案。

0 投票
1 回答
684 浏览

audio - 媒体基金会 IMFMediaSource::CreatePresentationDescriptor 调用永无止境

我正在尝试使用 Media Foundation 播放 mp3 文件,但在PresentationDesctiptor使用CreatePresentationDescriptor方法时遇到问题

我在做什么:

  • 使用启动 MFMFStartup
  • 使用创建会话MFCreateMediaSession
  • 使用创建 SourceResolverMFCreateSourceResolver
  • CreateObjectFromURL使用SourceResolver创建 MediaSource
  • 使用创建拓扑MFCreateTopology
  • 尝试使用CreatePresentationDescriptorMediaSource创建 PresentationDescriptor

当我调用CreatePresentationDescriptor没有错误/异常发生时,它只是站在那里,什么也不做。当我暂停 Visual Strudio 时,它表明程序仍在等待方法完成。我究竟做错了什么 ?

0 投票
1 回答
691 浏览

windows-runtime - 用于 Windows RT 的 Media Foundation Audio MFT 的最小实现

我已经搜索了网络、不同的论坛和 MS Windows 8 应用程序示例,但我只找到了超出我想象的结果或用户的问题——就像我自己一样——执行非常简单的任务,例如观察原始 PCM 音频(或任何其他样本通过拓扑)进行分析,但除了查看这个或那个样本之外,并没有真正得到任何其他答案。

这些样本的问题是,它们做得太多,像我这样的菜鸟,找不到第一个“简单”进入该主题的条目。

所以我的问题是:有没有人有一个真正的、最小的、通过 MFT 实现,甚至更好的模板可以插入到 MF 拓扑中?

有了这个,我认为很多问第二组问题的用户——比如我自己——可以更容易地掌握这个主题的真正核心,而不必理解一个复杂的样本,将其简化为本质,而不是开始构建他们实际的东西打算做。

任何帮助表示赞赏

0 投票
1 回答
504 浏览

video - AVS 视频解码器 DirectShow 过滤器或 MFT

有人知道 AVS 格式的视频解码器 DS 过滤器或媒体基础转换吗?
我试图在网上搜索它,但找不到...

提前致谢。

0 投票
1 回答
346 浏览

windows - Windows 7 CoreAudio Media Foundation - IID_IAudioStreamVolume 的 uuidof

我收到以下代码的链接错误:

hr = pPlaybackClient->GetService(IID_IAudioStreamVolume, (void **)&pStreamVolume);

链接错误是“未解析的外部符号_IID_IAudioStreamVolume”

IID_IAudioStreamVolume 是在 Audioclient.h 中定义的,我正在 #include 那个文件。如果我声明:

常量 IID IID_IAudioStreamVolume = __uuidof(IID_IAudioStreamVolume);

我收到“错误:__uuidof 的操作数必须具有已指定 __declspec(uuid('...')) 的类或枚举类型。

我确定这是一个小问题,但我没有看到答案 - 将不胜感激。

0 投票
1 回答
1346 浏览

windows - 使用 Media Foundation 为多个流设置音量

我正在为将同时播放多个音频流的应用程序提供音频代码。我对所有不同的选项都感到有些困惑,并且有些具体的事情我不太了解。

我正在使用 IAudioClient 调用来获取和设置音量。这是为多个流获取音量的最佳方式吗?

看来我必须调用 IAudioClient::Initialize。此函数需要 WAVEFORMATEX 结构。除了音量设置中使用的通道数之外,还有其他参数吗?此外,Initialize 似乎只能使用一次,并且音量设置和读取会发生多次。我应该保存对 IAudioClient 的引用并每次都使用它,还是每次获取或设置音量时都可以释放它?

如何区分在同一设备(端点)上播放的两个流?

这是设置音量的代码(通过常规检查确保每个调用成功消除以节省空间):

0 投票
4 回答
9484 浏览

c# - 使用 C# 64 位的 Axis Camera 视频流

我正在寻找一种方法来从 AXIS M10 IP 摄像机流式传输视频,并使用 Windows 窗体(或更好的 wpf)显示提要。但是,它需要在64 位平台上运行。

这意味着我不能使用 AXIS Media Control ActiveX 组件。此外,我发现这些方法有效,但仅在 32 位环境中有效:

1.使用 WPF 的 MediaElement 类

2.使用嵌入式媒体播放器

3.VlcLib(用于dotnet

到目前为止,看起来我唯一的选择是直接实现 RTSP 协议并使用 Media Foundation(用于 .net)解码给定的 RTP/AVP 流并以某种方式显示它。(我能够使用 RTSP 调用让相机流式传输到 UDP 端口)。

我对 RTSP/流媒体还很陌生,所以我担心我可能会错过大局 - 我是否能够使用媒体基础在 winform/wpf 上渲染/显示视频,或者我必须看看那个其他功能?(根据我的研究,它看起来可以解码 H.264 流,但我没有看到任何视频播放功能)。我还遇到了 DirectShow - 我应该使用 DirectShow 而不是 Media Foundation 吗?

或者更好的是,是否有能够处理以 64 位运行的 RTSP 流的库?

0 投票
1 回答
5401 浏览

c# - 将 AAC 转换为 WAV

我已经在使用 Media Foundation API(感谢 MFManagedEncode,http://blogs.msdn.com/b/mf/archive/2010/02/18/mfmanagedencode.aspx)将 wav 转换为 aac。我还没有完全理解它是如何工作的,但它确实有效——谢天谢地。

现在我发现很难以另一种方式进行转码,即使它有一个 MF 编解码器(AAC 解码器)。我找不到如何使用它的示例,而且我发现 MSDN 文档至少可以说是神秘的;有人幸运吗?

AC# 包装器将是理想的。

TIA。