Как проиграть музыку на python?

Добрый день! Как можно проиграть (mp3) файл на питоне не используя:
  • Pyglet - т.к. не работает с потоками.
  • Pygame - т.к . Плохо работает с mp3 файлами. Да, есть mixer.musik, но он не может определить окончание трека и т.п.

При этом библиотека должна быть маневренна - определять окончание музыки, ставить на паузу, поддерживать mp3, и если для запуска требует цикл, должна поддерживать многопоточность.
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Shroud228
Python, C++
playsound, лучший фреймворк
Ответ написан
https://wiki.python.org/moin/PythonInMusic
https://github.com/jiaaro/pydub#playback
https://pypi.org/project/audioplayer/


должна поддерживать многопоточность

Многопоточность поддерживать должен ваш код. Библиотека подойдет любая
Ответ написан
TomasHuk
@TomasHuk
Уже много лет использую pygame для запуска mp3 в Windows.
Если не вам, то может кому еще пригодится.
Создаю два файла для удобства. Главный файл - play_song.py.

sound.py:
import pygame, sys, datetime, time

def play(song):
    pygame.mixer.music.load(song)
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
            pos = pygame.mixer.music.get_pos()/ 1000

if __name__=='__main__':
    # print('run song',sys.argv[0])
    if len(sys.argv) > 1:
        song = sys.argv[1]
    else:
        song = 'file.mp3'

    pygame.mixer.init(22050, -16, 2, 2048)
    pygame.mixer.music.set_volume(2.0)
    play(song)
    pygame.quit()


play_song.py:
def run(song):
    import os, sys
    pypath = sys.executable
    os.spawnv(os.P_DETACH, pypath, ('python', 'sound.py', song))
    # print('Main process exiting.')

if __name__=='__main__':
    song = 'file.mp3'
    run(song)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы