Вот проблема:
Я хочу воспроизводить два аудиофайла в формате mp3 или mpeg параллельно, используя pydub.Что я заметил, так это то, что я могу без проблем запустить один поток, но он зависает, пока не закончится первый аудиофайл.Только после этого запускается второй файл.
Я полагаю, что это связано с питоном GIL.Поэтому я думаю, что потоки не смогут запускаться параллельно.Правильно ли я считаю, что это так?
Вот простая версия моего кода:
from pydub import AudioSegment
from pydub.playback import play
import threading
from threading import Thread
from threading import Event
class Song(Thread):
def __init__(self, filename):
"""initializes the thread"""
Thread.__init__(self)
self.soundfilename = filename
self._stopper = Event()
self.setName('SoundThread')
def run(self):
"""plays a given audio file"""
song = AudioSegment.from_mp3(self.soundfilename)
play(song)
def stop(self):
self._stopper.set()
if __name__ == '__main__':
s1 = '01. Born To Kill.mp3'
s2 = 't1.mpeg'
music1 = Song(s1)
music2 = Song(s2)
music1.run()
music2.run()
Единственная работа, которую я обнаружил, заключается в том, чтобы взять mp3, преобразовать его в волну, затемкормить его в pyaudio на волоске.Это хорошо, но это может быть вычислительно дорого для моих целей.
Ссылка для обхода
Спасибо!