IMFSinkWriter :请求无效,因为已调用 Shutdown()
Posted
技术标签:
【中文标题】IMFSinkWriter :请求无效,因为已调用 Shutdown()【英文标题】:IMFSinkWriter : The request is invalid because Shutdown() has been called 【发布时间】:2020-08-14 02:56:00 【问题描述】:只是测试一些简单的音频到 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, NULL, &pSinkWriter);
std::cout << std::system_category().message(hr) << "\n";
system("pause");
输出:
操作成功完成。
请求无效,因为已调用 Shutdown()。
按任意键继续。 . .
我可能需要调用“CoCreateInstance(__uuidof(SOMETHING), NULL, CLSCTX_ALL, __uuidof(IMFSinkWriter), (void**)&pSinkWriter);”,但我不确定 SOMETHING 应该是什么,或其他原因可能是。
谢谢。
【问题讨论】:
【参考方案1】:需要调用“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, NULL, &pSinkWriter);
std::cout << std::system_category().message(hr) << "\n";
system("pause");
输出:
操作成功完成。
操作成功完成。
操作成功完成。
按任意键继续。 . .
【讨论】:
以上是关于IMFSinkWriter :请求无效,因为已调用 Shutdown()的主要内容,如果未能解决你的问题,请参考以下文章
使用 IMFSinkWriter 编码的视频的播放速度根据宽度变化