我应该使用线程编程来混合2audiostream吗?

我想编写一个从麦克风捕获audiostream的程序,同时将这个stream与播放的audio文件混合。

我寻找图书馆,api等等..但是我的关注是关于实施,我应该使用线程编程? 我不知道如何使用线程呢。

操作系统是windows,语言是c ++或python

谢谢

我想你会需要某种线程,以使捕捉和回放顺利并行运行。

请注意,Python中的多线程受GIL的限制。 在C ++中,可以使用类似Boost.Thread东西。

一般来说,获得多线程是很困难的,你应该花点时间去熟悉它。 你最好的选择可能是找一本好书。

py2.6自带了基于处理的线程,所以你没有todo只是绿色的线程

您可以使用SDL调音台 。 它启动一个线程,所以你不必这样做。 有很好的教程和参考页面。

你可以看看大胆的源AudioIO.cpp,它使用portmixer(也值得一看)。

您可以在portmixer中查看如何在Windows中启动音频io流。 网上也有很多好的教程,比如这个 。

虽然Windows Wave API会为您启动音频线程,但最佳做法是让另一个线程读取/解析/解码要混合的音频文件,并填充音频线程回调可访问的缓冲区。 Portaudio / SDL / Open AL只是Windows声音主机(MME / Direct Sound)之上的一层,所以如果使用其中的一个,它仍然是真实的。

但是如果你感觉真的很懒,或者只是想要一个快速的概念证明,就可以从主线程的音频文件中填充缓冲区。

关于麦克风输入,当您指定流的详细信息时,您可以说您需要哪种设备输入,并将这些输入作为输入/浮点数组发送给您,您可以将其直接发送到输出数组。 在你的情况下,你想混合(添加)的音频文件。