感谢您花时间阅读我的问题。
我正在使用 Qt 和 windows API 开发一个 C++ 应用程序。
我正在以原始格式录制 10 秒的小音频文件中的麦克风输出,我想将它们转换为 aac 格式。
我尝试阅读尽可能多的内容,并认为从 Windows Media Foundation 转码 API 开始会是一个好主意。
问题是,我似乎无法在“CreateObjectFromUrl”函数中使用 .raw 或 .pcm 文件,所以我现在几乎被困在这里。它一直在失败。hr 返回码等于 3222091460。我尝试将 .mp3 文件传递给函数,当然它可以工作,因此不涉及 url-human-failure。
MF_OBJECT_TYPE ObjectType = MF_OBJECT_INVALID;
IMFSourceResolver* pSourceResolver = NULL;
IUnknown* pUnkSource = NULL;
// Create the source resolver.
hr = MFCreateSourceResolver(&pSourceResolver);
if (FAILED(hr))
{
qDebug() << "Failed !";
}
// Use the source resolver to create the media source.
hr = pSourceResolver->CreateObjectFromURL(
sURL, // URL of the source.
MF_RESOLUTION_MEDIASOURCE, // Create a source object.
NULL, // Optional property store.
&ObjectType, // Receives the created object type.
&pUnkSource // Receives a pointer to the media source.
);
MFCreateSourceResolver 工作正常,但 CreateObjectFromURL 不成功:(
所以我有两个问题要问你们:
- 是否可以使用 Windows Media Foundation 将原始音频文件编码为 aac 文件?
- 如果是,我应该阅读什么来完成我想要的?
我想指出我不能只使用 ffmpeg 或 libav,因为我买不起我的软件的任何许可证,并且不希望它处于 GPL 许可证下。但是,如果有 Windows 媒体基础的替代方案可以将原始音频文件编码为 aac,我会很高兴听到它们。
最后,对不起我的英语不好,这显然不是我的母语,如果我让你流血了,我很抱歉。(如果我让你发笑,我会很高兴)
祝你今天过得愉快