为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中随机开始播放多个循环音轨?

在 Python 中随机开始播放多个循环音轨?

杨__羊羊 2021-12-09 14:38:38
我有一个保存为 .wav 文件的各种长度的声音样本列表。我想播放第一个样本并让它永远循环。作为事件或状态更改后的某个时间点,我希望第二个样本开始播放第一个样本。然后两个样本将永远循环。在下一个事件之后,第三个样本将被添加到混合中。所有三个样本都将永远循环。对于所有样本,这将继续。我已成功同时播放多首曲目,但无法将新曲目添加到以前循环播放的曲目中。我尝试过 PyAudio 和 PyDub。有没有办法让一个连续的循环流添加额外的轨道?我有点卡住了。先感谢您。from pydub import AudioSegmentfrom pydub.playback import playaudio1 = AudioSegment.from_file("zipper.wav") audio2 = AudioSegment.from_file("jar.wav") audio3 = AudioSegment.from_file("dribble.wav") mixed = audio1.overlay(audio2)          mixed1  = mixed.overlay(audio3)mixed1.export("mixed.wav", format='wav')play(mixed1)   编辑#1随着不断的实验,pydub 似乎是一个阻塞函数,所以我将无法使用它,因为我会将这种音频混合与热像仪分析与 OpenCV 和 LED 灯矩阵结合起来。不知道从这里去哪里。编辑 #2 我在这个链接上发现了一些非阻塞的 pyaudio 代码。它允许我无限循环播放一个 .wav 文件。我试图添加第二个玩家,但它抛出了一个错误。
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

在挖掘和多次尝试之后,我找到了一种使用 pygame 模块的方法。我最初没有研究这个模块,因为我认为它仅限于 8 个同时发出的声音。那只是默认设置。


pygame.mixer.set_num_channels(26)

我将通道数更改为 26。


import pygame

import time


pygame.mixer.init()

pygame.init()


pygame.mixer.set_num_channels(26)


sound1 = pygame.mixer.Sound("sound1.ogg")

sound2 = pygame.mixer.Sound("sound2.ogg")


sound1.play(loops = -1)

time.sleep (2)


sound2.play(loop = -1)


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 321 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号