0
我有一個文件.amr擴展名,我想要得到它的採樣率和使用微軟媒體基金會渠道數量。此外,我想解碼並獲取未壓縮的數據。媒體基金會AMR解碼
我可以成功從.aac .mp4和其他文件類型獲取這些文件,但不能從.amr文件(或包含.amr跟蹤文件的3.gp文件)獲取這些文件。
所以,對於其他類型的我做的:
IMFSourceReader *m_pReader;
IMFMediaType *m_pAudioType;
MFCreateSourceReaderFromURL(filePath, NULL, &m_pReader);
m_pReader->SetStreamSelection(MF_SOURCE_READER_ALL_STREAMS, false);
m_pReader->SetStreamSelection(MF_SOURCE_READER_FIRST_AUDIO_STREAM, true);
m_pReader->GetCurrentMediaType(MF_SOURCE_READER_FIRST_AUDIO_STREAM, &m_pAudioType);
UINT32 numChannels,sampleRate;
m_pAudioType->GetUINT32(MF_MT_AUDIO_NUM_CHANNELS, &numChannels);
m_pAudioType->GetUINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, &sampleRate);
考慮有此代碼中沒有任何錯誤。
對於.amr文件,有些垃圾正在寫入numChannels和sampleRate。
有沒有人有這方面的經驗,並知道如何識別和/或得到適當的渠道和採樣率進一步解碼?
順便說一句,Windows Media Player播放這個文件沒有問題。
在此先感謝。
省略*爲必填項*錯誤檢查的確是結束的好方法與垃圾。 –
我沒有在這裏寫錯誤檢查,但我在我的代碼中。我想讓代碼簡單易懂 – mbaros
MF確實支持AMR和媒體源報告相關參數。我想你應該已經發布了更完整的代碼和/或樣本AMR文件(如果它不能用像[this]這樣衆所周知的東西重現(http://cdn.online-convert.com/example-file/audio/amr /example.amr))。 –