这段时间一直在忙论文,很少时间写代码了,不过还是挤出点时间,整理了一下材料写了一个小的音乐播放器。
本来一直使用wxpython,但是考虑到以后工作了要使用qt,就转到pyqt了。以前也总使用fedora或者archlinux版本的linux,发现总是有那么多的包依赖问题要解决。索性改回了ubuntu。pymedia已经很长时间没有更新过了。在网上找了资料成功安装。写代码的过程中,发现以前学的重构和模式没有用上,不过先暂时放一放吧。曾第二个版本出来的时候,再好好重构一番。。。。。。
只粘贴部分代码
def playaudio(self):
import pymedia.muxer as muxer
import pymedia.audio.acodec as acodec
import pymedia.audio.sound as sound
import os.path as path
file_path = "/home/archy/Documents/python/yshouge.mp3"
root,ext = path.splitext(file_path)
demuxer = muxer.Demuxer(ext[1:].lower())
decoder = None
output = None
file = open(file_path,'rb')
data = ' '
while data:
data = file.read(20000)
if len(data):
frames = demuxer.parse(data)
for frame in frames:
if decoder == None:
decoder = acodec.Decoder(demuxer.streams[0])
audio_frame = decoder.decode(frame[1])
if audio_frame and audio_frame.data:
if output==None:
output = sound.Output(audio_frame.sample_rate,audio_frame.channels,sound.AFMT_S16_LE)
while self.stop:
time.sleep(1)
output.play(audio_frame.data)
while output.isPlaying():
time.sleep( 0.05 )