.amrという拡張子を持つファイルがあります。Microsoft Media Foundationを使用して、サンプルレートとチャンネル数を取得します。さらに、解凍して非圧縮データを取得したい。Media Foundation 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ファイルを投稿しておくべきだと思います(もしこれが[この1つ]のようによく知られているものであれば(http://cdn.online-convert.com/example-file/audio/amr /example.amr))。 –