问题描述
只需测试一些简单的音频到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");
输出:
操作成功完成。
操作成功完成。
操作成功完成。
按任意键继续。 。