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

c++ - Windows 8 将 Stream 传递给 MFSourceReader

我正在尝试制作一个程序,该程序可以从用户的音乐库中获取 .mp3 文件,并使用 Windows Media Foundation 将其转换IMFSourceReader为包含 PCM 值的数组,以进行一些令人兴奋的 DSP 操作。但是,我遇到了问题。

我的解决方案有两个项目;一个 C#/XAML 包含 UI 代码和一个 C++ 库,其中包含一些用于使用 Media Foundation 和 XAudio2 的本机代码以及一些public refC# 代码可以与之交互的类。

我无法使用MFCreateSourceReaderFromURL,因为即使您在应用程序清单中具有音乐库功能,它也会返回 ACCESS DENIED HRESULT。所以看起来我将不得不使用MFCreateSourceReaderFromByteStreamor 或MFCreateSourceReaderFromMediaSource. 现在,很容易使用Windows.Storage.KnownFolders.MusicLibrary并获取 aStream或 anIInputStream以及其他一些流类型来访问音乐文件,但是如何将其转换为 anIMFByteStream或 anIMFMediaSource或仅以某种方式将 mp3 解码为具有 PCM 值的字节数组?

我还考虑了将音乐文件重新保存在应用程序文件夹中的想法,以便我可以使用MFCreateSourceReaderFromURL或者可能可以绕过直接使用 Media Foundation 并使用类似Windows.Media.Transcoding转换为 PCM 的方法。我不确定这是 Transcoding 命名空间的用途。

我花了几个小时阅读媒体基金会文档,发现了一线希望,MFCreateMFByteStreamOnStream可以将 COM 转换IStream为字节流,但我需要找到/编写一个包装器来将我的 .net 流转换为 IStream。在我开始这项任务之前,我只想确保我朝着正确的方向前进,或者有更好的方法吗?

提前致谢。如果我犯了一个愚蠢的错误或错过了使用这些库的一些关键方面,也请提前道歉。

0 投票
0 回答
399 浏览

audio - IMFMediaEngine 和一个字节数组

我有一个包含多个媒体资产的大包文件(一个文件中有 5 个 mp3)。我正在读取包文件并检索一个字节数组(以及数组的大小)。我怎样才能将此信息转发给IMFMediaEngine它以播放它?

目前我正在IRandomAccessStream从一个解压缩的文件创建一个并将其转换为IMFByteStreambyMFCreateMFByteStreamOnStreamEx然后将其发送到SetSourceFromByteStream.

我宁愿只使用byte* datasize_t size提供媒体对象。可能吗?

0 投票
1 回答
332 浏览

audio - IMFMediaPlayer 在 SetSourceFromByteStream 期间挂起

背景:我正在为 Win8 编写一个 Metro 风格的应用程序。我需要能够播放音乐文件。由于质量和空间要求,我们使用编码音频 (mp3/ogg)。

我正在使用 XAudio2 播放音效(.wav 文件),但由于我无法找到使用它播放编码音频的方法,我决定使用 Media Foundation(IMFMediaPlayer 接口)播放音乐文件。

我下载了 metro 应用程序示例,发现 Media Engine Native C++ 视频播放示例最接近我的需要。

现在我的应用程序有 MediaPlayer 播放音乐,我遇到了一个问题。如果运行应用程序的设备足够慢,MediaPlayer 就会挂起。当我在我的设备上运行应用程序的发布版本时,它很好,我可以很好地听到音乐。但是,当我附加调试器或在较慢的设备上运行它时,它会在我为 MediaPlayer 设置字节流播放时挂起。

这是一些代码,您会发现它与示例非常相似:

这是 SetBytestream 方法:

它挂起的行是:

当我调试应用程序时,我可以按暂停并查看堆栈。好吧,不多,但至少我可以看到它无限期地在

任何想法为什么我的应用程序会以这种方式挂起?

(可选:如果您知道在 c++ Metro 风格应用程序中播放 mp3/ogg 的更好方法,请告诉我)

0 投票
1 回答
2782 浏览

winapi - 当 MediaFoundation API ProcessMessage() 返回给调用者时,收到错误“每个用户订阅的所有者 SID 不存在”。

我正在使用 VC++,VS2008。我收到错误消息“每用户订阅的所有者 SID 不存在”。

ProcessMessage() (IMFTransform) 返回成功状态,如果我看到调用堆栈,ProcessMessage() 会进入一些 Microsoft DLL(如 evr.dll 等),最后返回错误消息“所有者 SID 在每用户订阅不存在”。

谁能告诉我为什么我们会收到这个错误?如果可能的话如何解决它。任何指针也表示赞赏。非常感谢。

0 投票
2 回答
3081 浏览

windows-8 - Metro Style App MFT“类未注册”错误

我目前正在使用 Metro 应用程序框架设计一个应用程序,其中包括实时视频聊天功能。我正在使用 MediaCapture 示例中包含的 GrayscaleTransform MFT(此时只需从示例中复制并粘贴)。

但是,当我尝试将灰度效果添加到相机的图像流时,出现“未注册类”的致命错误。我知道这是因为我必须“激活并注册”媒体扩展,但我不知道如何。如何注册媒体扩展?

非常感谢所有帮助,我总是接受答案!

更新:我的灰度 IDL 文件如下所示:

0 投票
2 回答
833 浏览

c++ - 如何破译 COM 函数返回的 hr 返回值“-1072875847”?

我正在使用 VC++。COM 函数返回的 hr 返回值为“ -1072875847 ”。任何人都可以让我知道如何将 hr 值解读为它们的实际含义。具体来说“-1072875847”代表什么?

预先感谢。

0 投票
1 回答
410 浏览

windows-runtime - MFT 自定义图像过滤器

我目前正在开发一个 Metro Style 应用程序,它使用 MFT(媒体基础转换)将网络摄像头的视频流过滤成灰度,如示例所示。

但是,现在我想应用其他类型的滤镜,例如曝光、色调、亮度、纹理、晕影等。这个答案说我应该修改 TransformChroma 方法来实现这一点。不幸的是,我不知道如何获得 Y 值,我只能获得 U 和 V。如何获得 NV12、YUY2 和 UYVY 格式的 Y 值?

非常感谢所有帮助,我总是接受答案!

0 投票
3 回答
6390 浏览

directx - 使用 Direct2D 在 Direct3D11 表面上绘图

我正在尝试创建一个使用 D2D 和 D3D11 在视频上绘制文本的媒体基础转换。我正在尝试在 D3D11 资源之上构建 D2D RenderTarget,但不幸的是,大多数 D2D 和 D3D 互操作方法都需要 D3D10,这在此项目中不可用。

我必须使用的参数如下:ID3D11Device *pDevice、ID3D11Texture2D *pInput、UINT uiInIndex、ID3D11Texture2D *pOutput 和 UINT uiOutIndex。

我试图遵循本教程的建议,但结果证明它需要一个 ID3D10Texture2D 对象,这对我来说又不是一个选项。

0 投票
1 回答
1579 浏览

windows - 在 Windows 8 Media Foundation 转换中的 IMFMediaBuffer 上绘制文本

您将如何在 IMFMediaBuffer 对象上绘制文本,并将其写入另一个 IMFMediaBuffer 对象?

背景是我正在构建一个 MFT,最初我尝试使用 Direct2D 和 Direct3D11 来实现这一点,但无济于事。

0 投票
1 回答
2568 浏览

media - 媒体基础编码器 MF_E_TRANSCODE_NO_MATCHING_ENCODER

我正在尝试从 wmv 转换为 mp4。首先我需要实施我的 IMFTransform 来做到这一点吗?我需要将视频转换为 MFVideoFormat_I420 吗?

据我所知,如果您正确创建拓扑,这应该会自动处理。所以我创建了我的个人资料,显示在

http://msdn.microsoft.com/en-us/library/windows/desktop/ff819476%28v=vs.85%29.aspx

但我得到一个 MF_E_TRANSCODE_NO_MATCHING_ENCODER。我有Windows 7,所以我应该有编码器。

还有谁知道该教程的源代码在哪里。它不在 SDK 示例下。

谢谢。