感谢您的阅读,我有以下代码来读取 m4a 音频文件,我对下一步是什么有点迷茫。我知道我需要实现 SampleGrabber 来获取样本。理想情况下,我希望能够获得峰值和当前音频频率,就像单击屏幕顶部的箭头时简单的 iTunes 可视化器所做的那样。不过现在,我主要担心将 sampleGrabber 添加到我的图表中,并调用 SampleCB。这是我的图形构造:
public class Player
{
private IGraphBuilder graphbuilder;
private IMediaControl imc;
private IMediaEventEx imex;
private IMediaPosition imp;
private IBasicAudio iba;
private ISampleGrabber isg;
public Player(string file)
{
graphbuilder = (IGraphBuilder)new FilterGraph();
graphbuilder.RenderFile(location, null);
imc = (IMediaControl)graphbuilder;
imex = (IMediaEventEx)graphbuilder;
imp = (IMediaPosition)graphbuilder;
iba = (IBasicAudio)graphbuilder;
}
}
我在类中还有其他用于播放、音量等的方法。并且扩展了所有属性以使它们具有动画效果,WPF 风格,呵呵。现在我只是不知道在 GraphBuilder 中的何处添加 SampleGrabber,以及如何使其转到 SampleCB 方法。另外,我是否必须让整个类从 ISampleGrabberCB 继承?我已经尝试了这些不同的组合,但无法使任何工作......