我發現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