python - Phonon 可以播放 FLAC 文件吗?

标签 python qt pyside phonon flac

我正在尝试使用 PySide 的 Phonon 模块播放一些 .flac 文件(如果有区别的话,在 Mac 上),但它不是可用于播放的 mimetype。有没有办法启用此功能或我需要安装的插件?

最佳答案

您可以使用Pydub播放所有流行的音频格式,包括flac。和 Pyaudio

示例代码:

#-*- coding: utf-8 -*-
from pydub import AudioSegment
from pydub.utils import make_chunks
from pyaudio import PyAudio
from threading import Thread


class Song(Thread):

    def __init__(self, f, *args, **kwargs):
        self.seg = AudioSegment.from_file(f)
        self.__is_paused = True
        self.p = PyAudio()
        print self.seg.frame_rate
        Thread.__init__(self, *args, **kwargs)
        self.start()

    def pause(self):
        self.__is_paused = True

    def play(self):
        self.__is_paused = False

    def __get_stream(self):
        return self.p.open(format=self.p.get_format_from_width(self.seg.sample_width),
                           channels=self.seg.channels,
                           rate=self.seg.frame_rate,
                           output=True)

    def run(self):
        stream = self.__get_stream()
        chunk_count = 0
        chunks = make_chunks(self.seg, 100)
        while chunk_count <= len(chunks):
            if not self.__is_paused:
                data = (chunks[chunk_count])._data
                chunk_count += 1
            else:
                free = stream.get_write_available()
                data = chr(0)*free
            stream.write(data)

        stream.stop_stream()
        self.p.terminate()

song = Song("song.flac")
song.play()

关于python - Phonon 可以播放 FLAC 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116650/

相关文章:

python - 如果我不关闭 Python SQLite 中的数据库连接怎么办

python - 我的 MFC C++ .dll 的多线程

python - 调整 QVBoxLayout 的大小

qt - 如何仅设置 `Widget` 大小?

建立连接后,Python TCP socket.recv() 什么都不返回

python - 如何使用 django 进行解耦

c++ - 如何为应用程序中的某些按钮重置 QApplication::styleSheet?

qt - 如何为一行设置图像?

python - QTreeWidget双击展开动画

python - PySide/PyQt 覆盖小部件