作者Maiyo (夢中的帳號)
看板Python
標題[問題] 新手問題 如何播放網路上的.wav檔?
時間Fri Jun 17 08:55:55 2011
想請問一下
我要怎麼直接播放位於網路上的.wav檔呢?
目前我是這樣作
URL = ("檔案網路路徑")
response = urllib2.urlopen(URL)
waveFile = response.read()
如此得到waveFile本體
可是接下來如何播出?
使用pygame
pygame.mixer.init()
pygame.mixer_music.load(waveFile)
pygame.mixer.music.play()
會掛在load動作 他說我傳的參數型別錯誤
使用wave
wave.open(waveFile, 'r')
同樣也出現型別錯誤的問題
請問我該怎麼修改?
PS.
如果用Java寫 這樣做可以播放...
URL url = new URL(檔案網路路徑);
AudioClip clip = Applet.newAudioClip(url);
clip.play();
同樣的功能用python怎麼作呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.202.48.60
1F:推 jjandy:我也想知道 06/17 12:14
2F:推 EmptySmile:pygame.init() 06/17 12:42
3F:→ EmptySmile:pygame.mixer.Sound(waveFile).play() 06/17 12:43
多謝 檔案讀進去了 但出現錯誤
以下是我的code
------------------------------------------------------
import pygame.mixer
import urllib2
import time
URL = ("
http://163.20.58.2/edisk/demo/sound/0001.WAV")
response = urllib2.urlopen(URL)
waveFile = response.read()
pygame.mixer.init()
pygame.mixer.Sound(waveFile).play()
while pygame.mixer.get_busy():
time.sleep(0.1)
------------------------------------------------------
播放時出現error 在
time.sleep(0.1)
TypeError: argument 1 must be string without null bytes, not str
(見鬼...)
如果改成
------------------------------------------------------
while pygame.mixer.get_busy():
print ('playing...')
------------------------------------------------------
播放時會出現一個很短暫的高頻音 然後跳出
Exception exceptions.TypeError: 'argument 1 must be string
without null bytes, not str' in <module 'threading'
from 'C:\Python25\lib\threading.pyc'> ignored
※ 編輯: Maiyo 來自: 210.202.48.60 (06/17 14:24)
5F:→ EmptySmile:...um...pygame不是很熟...只好等高手們來解了... 06/17 15:08
6F:→ EmptySmile:您要不要試試看抓檔下來播放. 06/17 15:28
7F:→ Maiyo:檔案在本地端播放一切正常 但需求是播放網路上的檔... 06/17 15:35
8F:→ EmptySmile:我知道...我意思是python抓檔下來自己播放 06/17 15:40
10F:→ Maiyo:呃... 這個會安裝GStreamer 如果我最後用py2exe包出檔案 06/17 17:10
11F:→ Maiyo:有辦法在沒有安裝GStreamer的電腦上執行嗎? 06/17 17:10
12F:→ Maiyo:如果要額外安裝別的軟體 還不如直接用java... /_\ 06/17 17:12