Python - Воспроизведение аудио файлов, таких как потоковый музыкальный проигрыватель - PullRequest
0 голосов
/ 12 июня 2018

Итак, я хочу создать простую программу, такую ​​как проигрыватель музыки, используя протокол сокета UDP.Пока что я могу прочитать файл mp3, разбить его на несколько байтов и непрерывно отправлять его получателю (клиенту).Моя проблема в том, что я хочу воспроизвести mp3-файл по частям при получении его с сервера.Кто-нибудь может дать мне идею, как это сделать?Я пытался сыграть партию после ее получения, но между партией есть переход.Я хочу играть в нее гладко, как спойти.

Примечание: я не хочу получать все партии, присоединяться к ним и играть в них.То, что я хочу, это сыграть роль, получив ее.Большое спасибо за помощь.Я ценю это

Мой код:

Я отправил файл разделения через UDP по этому коду

with open('test.mp3', 'rb') as infile:
  d = infile.read(65500)
  while d :
    time.sleep(1)
    sent = sock.sendto(d, address)
    d = infile.read(65500)

Я получил файл разделения по этому коду

p = pyaudio.PyAudio()
    stream = p.open(format=pyaudio.paInt16,
                  channels=10,
                  rate=44100,
                  output=True)
  data, server = (sock.recvfrom(65500))
  while data != 'stop':
    stream.write(data)
    data, server = (sock.recvfrom(65500))
  stream.stop_stream()
  stream.close()
  p.terminate()

Я попробовал этот код и получил гудящий звук.

Другой подход:

while 1:
  data, server = (sock.recvfrom(65500))
  song = AudioSegment.from_file(io.BytesIO(data), format="mp3")
  play(song) #with pydub

Этот код работает, но, как вы знаете, я играю каждую партиюотдельно, поэтому существует задержка между каждой частью, и некоторая часть песни отсутствует

...