我不知道有关音频编程的第一件事,所以请耐心等待。有没有办法确定我的声音驱动程序正在播放哪个(或多个文件)文件?还是一种检查我的声音驱动程序播放的当前音频文件堆栈的方法?
我认为我基本上想要嗅探发送到音频总线的数据,以确定它在硬盘上的位置。如果可能,我很想知道如何使用.NET。
答案 0 :(得分:2)
我不认为这是可能的。在Windows中播放的API(DirectSound,waveOut *等)基本上将音频数据作为样本值数组处理,而不是作为文件处理。像SoundPlayer这样的高级类打开一个文件,将文件中的数据读入一个数组,然后将数组传递给回放方法,因此播放音频的东西对原始文件的位置一无所知。
作为另一个例子,我自己的程序(一个软件合成器)纯粹在内存中生成音频,在该过程中的任何一点都不涉及任何文件,因此无法确定文件的位置(因为没有'一个)。
一个专门播放文件的类可能会暴露一个API,允许你获取有关使用该类播放的任何文件的这些信息,但我从未见过这样的事情(我知道SoundPlayer并不是这样做的)肯定)。
Larry Osterman是这个网站的用户,并且是Windows音频系统背后的工程师,所以如果有人能够引起他的注意,他会知道这个问题的答案。但是,我认为这是不可能的肾脏。