Потоковое аудио [из Python] - PullRequest
       57

Потоковое аудио [из Python]

1 голос
/ 23 сентября 2019

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

Важно, что все это происходит в режиме реального времени.Файлы WAV / OGG / MP3 не создаются.

Во время разработки я использовал PyGame и PyDub для создания музыки, смешивая 24 канала аудиосэмплов в один выход.Вывод во время разработки воспроизводился через Pygame Mixer прямо на аудиоустройстве по умолчанию, поэтому я слушал музыку на наушниках по мере разработки.

Теперь, однако, я хочу поместить все это в онлайн-приложениеи подавать аудио через Интернет.Когда пользователь попадает на домашнюю страницу, я хочу, чтобы он слышал музыку, передаваемую на его машину.

Вопрос: как лучше это сделать?

Во время разработки я предполагал, что наВ последнюю минуту я мог заменить свое аудиоустройство чем-то, что принимало поток аудиосигнала, подаваемый на него, и перенаправляло его на порт или что-то подобное, чтобы в встроенную на домашнюю страницу проигрыватель мог указывать этот порт и воспроизводить звук, исходящий с него.

Однако теперь, когда я дошел до этого момента, меня начинает осознавать, что я так и не понял, как работает звук, когда он подается таким образом.

Как упоминалось ранее, нет возможности экспортировать файл и затем указывать плеер на URL - музыка потенциально бесконечна.

Есть какие-нибудь подсказки?Я много искал через Google, но все, что я получил, это, например, кусочки об использовании «аудиосервера» для доставки mp3-файлов.Я чувствую, что просто неправильно понимаю основные понятия здесь и не задаю правильные вопросы.

В своих снах я просто добавляю что-то подобное в мой код:

  1. install snappy_library.py, который создает виртуальный аудиодрайвер.
  2. говорит snappy_library перенаправлять любыеАудио отправлено в PORT nnnn
  3. , скажите Pygame использовать snappy_library в качестве аудиоустройства.
  4. retire

Заранее благодарим за любые указатели / настройки контекста / примеры.

...