Media Foundation 获取编码比特率
Media Foundation get encoded bitrate
我正在尝试使用 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);
它工作正常。
有谁知道问题是什么and/or有没有其他方法可以获取音轨的编码比特率?
音频比特率是 属性 的曲目,而不是媒体文件。因此,您通常希望选择一个特定的曲目(是的,通常它是第一个音轨,即使该文件是 audio-only 单曲目文件)并查询其属性。
演示文稿描述会给你这样的属性(我只列出了一些相关的):
- 键
MF_MT_MAJOR_TYPE
、v值MFMediaType_Audio
- 键
MF_MT_SUBTYPE
、v值MFAudioFormat_AAC
- Key
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 to do this job for you. You would just request PKEY_Audio_EncodingBitrate
属性 并且处理程序将利用 Media Foundation 为您检索它.
我正在尝试使用 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);
它工作正常。
有谁知道问题是什么and/or有没有其他方法可以获取音轨的编码比特率?
音频比特率是 属性 的曲目,而不是媒体文件。因此,您通常希望选择一个特定的曲目(是的,通常它是第一个音轨,即使该文件是 audio-only 单曲目文件)并查询其属性。
演示文稿描述会给你这样的属性(我只列出了一些相关的):
- 键
MF_MT_MAJOR_TYPE
、v值MFMediaType_Audio
- 键
MF_MT_SUBTYPE
、v值MFAudioFormat_AAC
- Key
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 to do this job for you. You would just request PKEY_Audio_EncodingBitrate
属性 并且处理程序将利用 Media Foundation 为您检索它.