【问题标题】:IMFSinkWriter : The request is invalid because Shutdown() has been calledIMFSinkWriter :请求无效,因为已调用 Shutdown()
【发布时间】: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 应该是什么,或其他原因可能是。

谢谢。

【问题讨论】:

    标签: c++ encoding ms-media-foundation


    【解决方案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");
    

    输出:

    操作成功完成。

    操作成功完成。

    操作成功完成。

    按任意键继续。 . .

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2021-10-23
      • 2016-08-08
      • 2012-03-14
      • 1970-01-01
      相关资源
      最近更新 更多