可靠的低延迟音频播放和录制
rtmixer的Python项目详细描述
警告:这是正在进行的工作!
目标:使用python可靠的低延迟音频播放和录制,使用 PortAudio通过sounddevice模块。
音频回调在c中实现(并在CFFI的帮助下编译) 不调用python解释器,因此避免等待 比如垃圾收集和垃圾桶。
支持所有portaudio平台和主机api。 运行在cffi可用的任何python版本上。
计划的功能:
-
同时播放多个信号(固定最大值?)
- 固定延迟播放,无抖动(可选)
- 精确采样回放/录制(具有已知偏移量)
- 非阻塞回调函数,使用Portaudio RingBuffer
- 从存储器播放,从发电机播放
- 多通道支持
- 详细报告超支/不足情况
- 所有内存分配/释放都发生在音频回调之外
- 环回测试以验证正确的操作和准确的延迟值
- 可选的numpy支持?
- 播放完成时通知?
- 播放列表/队列?
超出范围:
- 读取/写入文件(使用soundfile模块)
- 实时信号处理(音频回调内)
- 信号发生器
- 多个混音器实例(有些portaudio主机api只支持 一次)
- 重新采样(除了Portaudio所做的之外)
- 淡入/淡出
- 快进/快退
- 摇摄/平衡
- 音频/视频同步
有点类似的项目:
- https://github.com/nwhitehead/swmixer
- https://github.com/nvahalik/PyAudioMixer
- http://www.pygame.org/docs/ref/mixer.html
安装
python3 setup.py develop --user
或
python3 -m pip install -e . --user
编译扩展不需要安装portaudio 模块,但portaudio.h必须可用。
如果您只想编译C扩展模块(不安装 rtmixermodule),您可以运行这个:
python3 rtmixer_build.py
用法
importrtmixermixer=rtmixer.RtMixer()