pymediaでMP3を再生する
def play_sound(fileobject,volume=0x7FFF,decoder="mp3"): import pymedia.muxer as muxer, pymedia.audio.acodec as acodec, pymedia.audio.sound as sound if fileobject == None: return None dm= muxer.Demuxer(decoder) dec= None snd = None buff = ' ' while len(buff): buff=fileobject.read(32000) if len(buff): frames= dm.parse(buff) for fr in frames: if dec== None: dec= acodec.Decoder( dm.streams[0] ) r= dec.decode( fr[1] ) if r and r.data: """ AFMT_S16_LE 符号つき 16 ビットオーディオ、リトルエンディアンバイトオーダ (Intelプロセッサで使われている形式) AFMT_S16_BE 符号つき16ビットオーディオ、ビッグエンディアンバイトオーダ (68k、PowerPC、Sparcで使われている形式) ほとんどのシステムは、上記の形式のサブセットしかサポートしていません。また、多くのデバイスが AFMT_U8 だけしかサポートしていません。 現在使われている最も一般的な形式はAFMT_S16_LEです。 <http://www.python.jp/doc/2.4/lib/ossaudio-device-objects.html> """ if snd== None: snd= sound.Output(r.sample_rate,r.channels,sound.AFMT_S16_LE) snd.setVolume(volume) snd.play( r.data ) fileobject.close() return snd
使い方
鳴らしたければ
snd = play_sound(open("sample.mp3","rb"))
止めたければ
snd.stop()
鳴り終わるまで待ちたければ
import time while snd.isPlaying():time.sleep(0.05)