IMFSinkWriter:该请求无效,因为已调用Shutdown

问题描述

只需测试一些简单的音频到mp3内容

我正在尝试使用IMFSinkWriter对音频进行实际编码并将其保存到磁盘。

我什至无法正确创建IMFSinkWriter。 这一定是一个菜鸟问题或一个非常奇怪的错误...

#include <iostream>
#include <mfidl.h>
#include <Mfreadwrite.h>
#pragma comment(lib,"Mfreadwrite.lib")
int main()
{
    IMFSinkWriter* pSinkWriter;
    HRESULT hr = CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
    std::cout << std::system_category().message(hr) << "\n";
    hr = MFCreateSinkWriterFromURL(L"Recording.mp3",NULL,&pSinkWriter);
    std::cout << std::system_category().message(hr) << "\n";
    system("pause");
}

输出

操作成功完成。

该请求无效,因为已调用Shutdown()。

按任意键继续。 。

我可能需要调用“ CoCreateInstance(__ uuidof(SOMETHING),NULL,CLSCTX_ALL,__ uuidof(IMFSinkWriter),(void **)&pSinkWriter);”,但是我不确定应该是什么东西,或由其他原因引起的可能是。

谢谢。

解决方法

需要调用“ MFStartup(MF_VERSION)”:

IMFSinkWriter* pSinkWriter;
HRESULT hr = CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
std::cout << std::system_category().message(hr) << "\n";
hr = MFStartup(MF_VERSION);
std::cout << std::system_category().message(hr) << "\n";
hr = MFCreateSinkWriterFromURL(L"Recording.mp3",NULL,&pSinkWriter);
std::cout << std::system_category().message(hr) << "\n";
system("pause");

输出:

操作成功完成。

操作成功完成。

操作成功完成。

按任意键继续。 。