2012-03-31 38 views
5

Bất cứ ai có kinh nghiệm chơi âm thanh (ngay bây giờ cụ thể mp3s) với python sử dụng bất kỳ libs?Phát lại âm thanh Windows (XP đến Windows 7) bằng python?

chi tiết:

Sử dụng là trong một ứng dụng wxPython (vâng tôi đã cố gắng wx.media.MediaCtrl)

Ok bây giờ là ở đây những điều tôi đã cố gắng.

thử mã như http://www.daniweb.com/software-development/python/code/216465/play-mp3-files-via-pythons-win32com-support

Không làm việc (không có âm thanh gì vậy bao giờ)

thử wxPython MediaCtrl: Các công việc đôi khi nhưng gần đây chỉ hoạt động phát lại tập tin, url chơi cho một vài giây và sau đó không có âm thanh (nhưng theo dõi tiếp tục đi, tôi biết tập tin được tải xuống hoàn toàn cũng vì vậy nó không phải là phương tiện truyền thông không được tải xuống). Tôi đã có thể sửa lỗi này bằng cách khởi động lại sau đó nó hoạt động một chút rồi bị hỏng, thử khởi động lại và lần này không khắc phục được, tuy nhiên trình phát khác sử dụng windows media apis (ứng dụng C# .NET) hoạt động tốt và Windows Media Player cũng vậy. Vì vậy, nó là một số lỗi trong libs wxWidgets Tôi đoán

cố gắng sử dụng mplayer, ví dụ: http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/ vấn đề lớn mplayer không thích thiết lập thuộc tính và vì vậy tôi không bao giờ có thể tạm dừng vì nếu tôi làm điều đó sau đó sẽ không cho tôi thiết lập trạng thái trở lại để phát (xem mã tôi sử dụng ở đây)

Trên Linux tôi đã sử dụng gstreamer, hoạt động sau một số nhức đầu (mặc dù vẫn còn có vấn đề của nó cũng), MacOS X chưa được thử nghiệm nhưng tôi sẽ để thử quicktime và wx.media.MediaCtrl hy vọng rằng hoạt động)

Trả lời

6

Tôi đã sử dụng PortAudio trong một vài dự án, là miễn phí trên nền tảng-nguồn mở-âm thanh thư viện, nhưng không bao giờ với python. Đừng lo, có các ràng buộc cho nó:

PyAudio cung cấp các ràng buộc Python cho PortAudio.

""" 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() 
+0

Xin cảm ơn, hãy kiểm tra! – Zimm3r

+0

Tôi đã thử nghiệm nó không thực sự là những gì tôi đang tìm kiếm vì vậy cảm ơn sự giúp đỡ và tất cả mọi thứ. Thưởng thức tiền thưởng :) – Zimm3r

Các vấn đề liên quan