在Media Foundation中检测音量或沉默

时间:2014-08-12 18:34:44

标签: c++ audio ms-media-foundation

我正在开发基于微软媒体基金会平台的媒体播放器。对于程序的平稳运行至关重要的是它能够做两件事:检测文件开头或结尾处的任何静音,并执行音频文件的标准化。这两件事都涉及检测"音量"或者"响度"。

根据我迄今为止所做的研究,这将涉及使用IMFSourceReader提取所有IMFMediaSample对象,然后为每个样本提取任何和所有IMFMediaBuffer对象。

锁定缓冲区后,我将包含其中包含的数据字节。如何解释这些数据以确定"响度",然后操纵数据来调整响度?

1 个答案:

答案 0 :(得分:1)

要分析文件,您只需为文件创建source reader,然后阅读每个音频样本。

要更改文件中的值,有两个选项,具体取决于您要执行的操作。

您可以创建MFT并在MediaSession中使用它来在播放或转码过程中更改值。

或者您可以在程序中实现代码并更改从源阅读器获得的值(如在分析模式下)并将其写入sink writer。在这两个选项中,您正在使用IMFSample的缓冲区。