我正在尝试使用Media Foundation获取音频文件(mp4,m4a,aac)的编码比特率。
我做的是:
PROPVARIANT prop;
IMFSourceReader* reader;
MFCreateSourceReaderFromURL(filePath, NULL, &reader);
reader->GetPresentationAttribute(MF_SOURCE_READER_MEDIASOURCE, MF_PD_AUDIO_ENCODING_BITRATE,
&prop);
第二行以错误和空PROPVARIAT结束。
然而,当我这样做时:
reader->GetPresentationAttribute(MF_SOURCE_READER_MEDIASOURCE, MF_PD_DURATION, &prop);
工作正常。
是否有人知道问题是什么和/或是否有其他方法可以获得音轨的编码比特率?
答案 0 :(得分: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
,vValue 0 MF_MT_AAC_PAYLOAD_TYPE
,vValue 0 如果您只需要一个信息值,例如Windows shell提供的信息:
并且您不需要Media Foundation(也就是说,只是为了访问该值),您可以使用shell property handler为您完成这项工作。您只需要PKEY_Audio_EncodingBitrate
属性,处理程序就可以利用Media Foundation为您检索该属性。