Воспроизведение музыки формата Flac в python

Рейтинг: 3Ответов: 1Опубликовано: 19.12.2014

Доброго времени суток.

Хочу воспроизвести музыку формата flac. Пробовал pygame, pydub - не вышло.
Посоветуйте библиотеку для работы с flac.
Заранее спасибо.

Ответы

▲ 5

Чтобы просто запустить файл на проигрывание из программы, можно попробовать webbrowser модуль, который попытается использовать приложение по умолчанию в системе для проигрывания .flac файлов:

import webbrowser

webbrowser.open('example.flac')

В более общем случае можно использовать GStreamer, который поддерживает многие форматы и работает на большинстве распространённых систем. Вот минимальный пример, который проигрывает произвольный медиа-файл (аудио, видео), заданный с командной строки:

#!/usr/bin/env python
"""Play a media file using GStreamer."""
import os
import sys
try:
    from urllib.parse import urljoin
    from urllib.request import pathname2url
except ImportError: # Python 2
    from urlparse import urljoin
    from urllib import pathname2url

from gi.repository import GObject, Gst
Gst.init(None)

def path2url(path):
    return urljoin('file:', pathname2url(os.path.abspath(path)))

media_uri = path2url(sys.argv[1]) # file:// url to play
print(media_uri)
player = Gst.ElementFactory.make('playbin', None)
player.set_property('uri', media_uri)
player.set_state(Gst.State.PLAYING)
try:
    GObject.MainLoop().run()
except KeyboardInterrupt: # stop playing on Ctrl-C
    player.set_state(Gst.State.NULL)

Чтобы завершить скрипт, нажми Ctrl-C.

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

Чтобы установить Gstreamer на Ubuntu:

$ sudo apt-get install python-gi python3-gi \
    gstreamer1.0-tools \
    gir1.2-gstreamer-1.0 \
    gir1.2-gst-plugins-base-1.0 \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-libav