这段时间一直在忙论文,很少时间写代码了,不过还是挤出点时间,整理了一下材料写了一个小的音乐播放器。

本来一直使用wxpython,但是考虑到以后工作了要使用qt,就转到pyqt了。以前也总使用fedora或者archlinux版本的linux,发现总是有那么多的包依赖问题要解决。索性改回了ubuntu。pymedia已经很长时间没有更新过了。在网上找了资料成功安装。写代码的过程中,发现以前学的重构和模式没有用上,不过先暂时放一放吧。曾第二个版本出来的时候,再好好重构一番。。。。。。

     使用pymedia和pyqt4写的一个音乐播放器

     只粘贴部分代码

     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 )


相关文章: