Board logo

标题: [问题求助] 想做一个基于python的音乐播放器 [打印本页]

作者: netdzb    时间: 2020-4-18 11:50     标题: 想做一个基于python的音乐播放器

现在已经能够播放音乐了,lrc解析的模块也完成了。
现在问题如何整合起来。

我想开2个线程,一个线程解码音频文件,另一个解析
lrc歌词并在屏幕输出。
这样做,会不会造成音乐和歌词对不上的情况?
作者: wujunkai    时间: 2020-4-18 13:48

回复 1# netdzb


    能把那两个模块发来看看嘛~有点好奇
作者: netdzb    时间: 2020-4-18 13:57

回复 2# wujunkai

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
import time

dictLrc = {}   

def lrcTime(lrc):
    dictLrc = lrc      
    listLrc = sorted(dictLrc)  
    timeLen = len(listLrc)
    timeFree = 0
    count = 0
    for i in listLrc:  
        timeFree = i -count  
        time.sleep(timeFree)
        print(dictLrc)
        count = i   

def revertTime(time):
    time1 = time
    timeList = time1.split(":")
    return  round(float(timeList[0]) * 60 + float(timeList[1]),2)

def getLrc():
    rf = open("lrc.txt","r")
    getlrc = rf.read()
    rf.close()
    return getlrc  

def splitStr(getstr):
    global  dictLrc   
    getStr = getstr
    count = 0  
    for i in getStr:   
        if i =="[":
            count +=1

    getStr = getStr.replace("][","*")
    getStr = getStr.replace("[","*")
    getStr = getStr.replace("]","*")
    lineLrc = getStr.split("*")
    for i in range(1,count+1):
        LrcTimes = revertTime(lineLrc)
        dictLrc[LrcTimes] = lineLrc[-1]

def printLrc(lrc):
    lrc1 = lrc
    for i in lrc1:   
        splitStr(i)  

lrc = getLrc()      
listLrc = lrc.split('\n')   
printLrc(listLrc)
lrcTime(dictLrc)
作者: netdzb    时间: 2020-4-18 13:58

回复 2# wujunkai

#!usr/bin/env python
#coding=utf-8

import pyaudio
import wave

#define stream chunk
chunk = 1024

#open a wav format music
f = wave.open(r"1.wav","rb")
#instantiate PyAudio
p = pyaudio.PyAudio()
#open stream
stream = p.open(format = p.get_format_from_width(f.getsampwidth()),
                                channels = f.getnchannels(),
                                rate = f.getframerate(),
                                output = True)
#read data
data = f.readframes(chunk)

#paly stream
while data != '':
        stream.write(data)
        data = f.readframes(chunk)

#stop stream
stream.stop_stream()
stream.close()

#close PyAudio
p.terminate()




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2