【问题标题】:Does Windows Media Foundation on UWP have a resampler? If so how do I use it?UWP 上的 Windows Media Foundation 是否有重采样器?如果是这样,我该如何使用它?
【发布时间】:2020-11-18 14:32:24
【问题描述】:

使用 Win32,我可以访问 CLSID_CResamplerMediaObject,这意味着我可以将我的频道数从 6 个减少到 2 个。

在 UWP 上,这不再定义,我能找到的对重采样器的唯一引用是 CLSID_AudioResamplerMediaObject。但是,当我创建此类的实例并将其传递给我的 MFMediaType_FloatMFMediaType_PCM 类型时,它表示不支持提供的类型...

ComPtr<IUnknown> pTransformUnknown = nullptr;
DxUtil::ThrowIfFailed(CoCreateInstance(CLSID_AudioResamplerMediaObject, NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, &pTransformUnknown));
DxUtil::ThrowIfFailed(pTransformUnknown->QueryInterface(IID_PPV_ARGS(&mResampler)));

IMFMediaType* pInputType = nullptr;
DxUtil::ThrowIfFailed(MFCreateMediaType(&pInputType));
DxUtil::ThrowIfFailed(pInputType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio));
DxUtil::ThrowIfFailed(pInputType->SetGUID(MF_MT_SUBTYPE, MFAudioFormat_PCM)); // Or MFAudioFormat_Float
DxUtil::ThrowIfFailed(pInputType->SetUINT32(MF_MT_AUDIO_BITS_PER_SAMPLE, 16));
DxUtil::ThrowIfFailed(pInputType->SetUINT32(MF_MT_AUDIO_NUM_CHANNELS, 6));
DxUtil::ThrowIfFailed(pInputType->SetUINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, 48000));
DxUtil::ThrowIfFailed(mAudioSourceReader->SetCurrentMediaType(MF_SOURCE_READER_FIRST_AUDIO_STREAM, nullptr, pInputType)); // Fails here!

像往常一样,Microsoft 文档没有帮助,如果有任何帮助,我将不胜感激!

输入文件为 Mp4,具有 1 个 aac 流、6 个通道、16 位音频。

【问题讨论】:

    标签: audio uwp ms-media-foundation


    【解决方案1】:

    CLSID_AudioResamplerMediaObjectCLSID_CResamplerMediaObject 是同一个东西,{f447b69e-1884-4a7e-8055-346f74d6edb3} 的 GUID 相同。

    您提到的错误不是来自音频重采样器,而是来自 Source Reader API。错误可能被正确报告,表明对于给定的媒体源,阅读器无法提供对提供的媒体类型的转换。发生这种情况可能有多种原因。

    【讨论】:

    • 谢谢!那我得进一步调查了。
    • 原来我错过了:MF_MT_AUDIO_CHANNEL_MASK、MF_MT_AUDIO_BLOCK_ALIGNMENT、MF_MT_AUDIO_AVG_BYTES_PER_SECOND...它们都是强制属性。
    • 正确。它们基本上被描述为here,并且在一般情况下,人们想知道解码器究竟建议了什么媒体类型,并从源阅读器请求它。另一种可能的方法是请求部分媒体类型。
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 2018-03-30
    • 2015-05-22
    • 2021-06-15
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    相关资源
    最近更新 更多