找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 13571|回复: 3

[问题求助] 想做一个基于python的音乐播放器

[复制链接]
发表于 2020-4-18 11:50:24 | 显示全部楼层 |阅读模式
现在已经能够播放音乐了,lrc解析的模块也完成了。
现在问题如何整合起来。

我想开2个线程,一个线程解码音频文件,另一个解析
lrc歌词并在屏幕输出。
这样做,会不会造成音乐和歌词对不上的情况?
发表于 2020-4-18 13:48:47 | 显示全部楼层
回复 1# netdzb


    能把那两个模块发来看看嘛~有点好奇
 楼主| 发表于 2020-4-18 13:57:51 | 显示全部楼层
回复 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)
 楼主| 发表于 2020-4-18 13:58:19 | 显示全部楼层
回复 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()
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:48 , Processed in 0.018692 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表