2017-01-25 22 views
0

Media Foundationを使用してオーディオファイル(mp4、m4a、aac)のエンコードされたビットレートを取得しようとしています。私が何をしたかMedia Foundationはエンコードされたビットレートを取得します

は次のとおりです。

PROPVARIANT prop; 
IMFSourceReader* reader; 

MFCreateSourceReaderFromURL(filePath, NULL, &reader); 
reader->GetPresentationAttribute(MF_SOURCE_READER_MEDIASOURCE, MF_PD_AUDIO_ENCODING_BITRATE, 
                        &prop); 

2行目には、エラーで、空PROPVARIATで終わります。

しかし、私が行うとき:

reader->GetPresentationAttribute(MF_SOURCE_READER_MEDIASOURCE, MF_PD_DURATION, &prop); 

それは正常に動作します。

問題が何かを知っている人や、オーディオトラックのエンコードされたビットレートを取得する他の方法はありますか?

+1

MSDNに記載されているように、MF_PD_AUDIO_ENCODING_BITRATEはオプションです。私はMF_MT_AUDIO_SAMPLES_PER_SECONDとMF_MT_AUDIO_BITS_PER_SAMPLEのGetUINT32を良くし、そこからビットレートを計算する方が良いと思います。 – VuVirt

答えて

1

オーディオビットレートは、トラックのプロパティであり、メディアファイルのプロパティではありません。したがって、通常は特定のトラックを選択したいと思います(通常、ファイルがオーディオ専用の単一トラックファイルであっても最初のオーディオトラックです)、その属性を照会します。

  • キーMF_MT_MAJOR_TYPE、vValue MFMediaType_Audio
  • キーMF_MT_SUBTYPE、vValue MFAudioFormat_AAC
  • キーMF_MT_AVG_BITRATE、vValue 125601

    プレゼンテーションの説明は、あなたがこの(私はほんの数、関連リスト)などの属性になるだろう

  • キーMF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION、v値0
  • キーMF_MT_AAC_PAYLOAD_TYPE、vValue 0

あなただけの、このようなWindowsシェルが提示などの情報値を、必要な場合:

enter image description here

、あなたはそれがちょうど、である(メディア財団がそうでない場合は必要ありません。値にアクセスするには、shell property handlerを使用してこのジョブを実行します)。 PKEY_Audio_EncodingBitrateのプロパティを要求するだけで、ハンドラはMedia Foundationを利用してそれを取得します。

関連する問題