我发现this文章,解释如何使用媒体基础编码视频。使用接收器编码器编码音频
我想使用上述链接中使用的原则对音频进行编码。
我一直在设置接收器写入器的正确输入媒体类型。
下面是部分:在最后一行
if (SUCCEEDED(hr))
hr = MFCreateMediaType(&pMediaTypeIn);
if (SUCCEEDED(hr))
hr = pMediaTypeIn->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio);
if (SUCCEEDED(hr))
hr = pMediaTypeIn->SetGUID(MF_MT_SUBTYPE, MFAudioFormat_Float);
if (SUCCEEDED(hr))
hr = pMediaTypeIn->SetUINT32(MF_MT_AUDIO_NUM_CHANNELS, cChannels);
if (SUCCEEDED(hr))
hr = pMediaTypeIn->SetUINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, sampleRate);
if (SUCCEEDED(hr))
hr = pSinkWriter->SetInputMediaType(streamIndex, pMediaTypeIn, NULL);
我的代码失败而设置输入介质类型。
任何帮助,如何处理?
谢谢。
你是如何创建SinkWriter的?你尝试过使用MFAudioFormat_PCM吗? – VuVirt
MFCreateSinkWriterFromURL(L“output.m4a”,NULL,NULL,&pSinkWriter); 是的,我已经尝试PCM和浮动。他们不能设置 – mbaros
我认为你还需要在媒体类型中提供MF_MT_AUDIO_BITS_PER_SAMPLE。它必须设置为16.请检查输入类型要求:https://msdn.microsoft.com/en-us/library/windows/desktop/dd742785(v=vs.85).aspx 采样率必须是要么44100或48000.子类型必须是MFAudioFormat_PCM。 – VuVirt