簡體   English   中英

Windows(XP至Windows 7)使用python播放音頻?

[英]Windows (XP to Windows 7) audio playback with python?

任何人都有使用任何庫使用python播放音頻(現在是mp3)的經驗嗎?

細節:

使用在wxPython應用程序中(是的,我已經嘗試過wx.media.MediaCtrl)

好了,現在是我嘗試過的東西。

嘗試過的代碼,例如http://www.daniweb.com/software-development/python/code/216465/play-mp3-files-via-pythons-win32com-support

不起作用(以前沒有聲音)

嘗試了wxPython MediaCtrl:有時可以工作,但是最近只能播放文件,url播放了幾秒鍾,然后沒有音頻(但是音軌一直在繼續,我知道文件也已完全下載,因此不是未下載媒體)。 我能夠通過重新啟動來解決此問題,然后重新工作了一段時間,然后壞了,嘗試再次重新啟動,這次沒有解決問題,但是使用Windows Media API(C#.NET應用程序)的其他播放器工作正常,因此Windows Media Player。 所以我猜這是wxWidgets庫中的一些錯誤

嘗試使用mplayer,例如: http : //www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/主要問題mplayer不喜歡設置屬性,因此我可以永遠不要暫停,因為如果我這樣做了,那么就不會讓我重新設置播放狀態(請參閱我在此處使用的代碼http://paste.pocoo.org/show/574269/

在Linux上,我使用了gstreamer,雖然有些頭痛(盡管仍然有一些問題),但仍可以工作,但尚未測試MacOS X,但我將嘗試使用quicktime和wx.media.MediaCtrl,希望可以工作)

我在幾個項目中使用了PortAudio ,這是一個免費的跨平台,開放源音頻庫,但從來沒有使用python。 不用擔心,這里有綁定:

PyAudio為PortAudio提供Python綁定。

""" Play a WAVE file. """

import pyaudio
import wave
import sys

chunk = 1024

if len(sys.argv) < 2:
    print "Plays a wave file.\n\n" +\
          "Usage: %s filename.wav" % sys.argv[0]
    sys.exit(-1)

wf = wave.open(sys.argv[1], 'rb')

p = pyaudio.PyAudio()

# open stream
stream = p.open(format =
                p.get_format_from_width(wf.getsampwidth()),
                channels = wf.getnchannels(),
                rate = wf.getframerate(),
                output = True)

# read data
data = wf.readframes(chunk)

# play stream
while data != '':
    stream.write(data)
    data = wf.readframes(chunk)

stream.close()
p.terminate()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM