可靠的低延迟音频播放和录制

rtmixer的Python项目详细描述


警告:这是正在进行的工作!

目标:使用python可靠的低延迟音频播放和录制,使用 PortAudio通过sounddevice模块。

音频回调在c中实现(并在CFFI的帮助下编译) 不调用python解释器,因此避免等待 比如垃圾收集和垃圾桶。

支持所有portaudio平台和主机api。 运行在cffi可用的任何python版本上。

计划的功能:

    同时播放多个信号(固定最大值?)
  • 固定延迟播放,无抖动(可选)
  • 精确采样回放/录制(具有已知偏移量)
  • 非阻塞回调函数,使用Portaudio RingBuffer
  • 从存储器播放,从发电机播放
  • 多通道支持
  • 详细报告超支/不足情况
  • 所有内存分配/释放都发生在音频回调之外
  • 环回测试以验证正确的操作和准确的延迟值
  • 可选的numpy支持?
  • 播放完成时通知?
  • 播放列表/队列?

超出范围:

  • 读取/写入文件(使用soundfile模块)
  • 实时信号处理(音频回调内)
  • 信号发生器
  • 多个混音器实例(有些portaudio主机api只支持 一次)
  • 重新采样(除了Portaudio所做的之外)
  • 淡入/淡出
  • 快进/快退
  • 摇摄/平衡
  • 音频/视频同步

有点类似的项目:

安装

python3 setup.py develop --user

python3 -m pip install -e . --user

编译扩展不需要安装portaudio 模块,但portaudio.h必须可用。

如果您只想编译C扩展模块(不安装 rtmixermodule),您可以运行这个:

python3 rtmixer_build.py

用法

importrtmixermixer=rtmixer.RtMixer()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java以编程方式最小化JInternalFrame?   java使用JsonPath将不均匀列表提取为类型化对象   spring如何将java/resources文件获取到InputStream?   Java逻辑错误并不总是存在   java Firebase,更新特定字段   Java stream groupby并同时加入以进行csv导出   java安卓:如果出现任何声音,监听器将录制声音   java如何从多个文件中轮询最后修改的文件并发送到apache camel中的目标端点?   java是否返回多个比较器?   JavaBean IO:Date MMM在CAPS中不解析   当JButton从另一个类单击时,java正在更新JLabel   基类中子类的Java泛型初始化   jakarta ee Java ee制作一个以毫秒为间隔的计时器来发送数据包   json Windows Azure日期格式转换为Java日期