我正在尝试使用tksnack创建一个实时移动到正在播放的声音的波形。我发现了一些示例代码或多或少地做了我想要的。
#! /usr/bin/env python
from Tkinter import *
from tkSnack import *
root = Tkinter.Tk()
initializeSnack(root)
snd = Sound()
def start():
snd.record()
c = SnackCanvas(height=500, width=1920, bg='white')
c.pack()
c.create_waveform(1,1,sound=snd,width=1920,height=500,pixelspersec=500)
start()
root.mainloop()
然而,这个例子从麦克风接收音频,但我想给它一个mp3。我该怎么做呢?我尝试用snd.read(file)替换snd.record(),但是没有用。
答案 0 :(得分:2)
你也可以使用包snackogg ... tksnack在Linux中工作,libsnack-alsa很好。我不知道还有小食。
这里以记录曲目为例 - 我把按钮放到你的源头。
#! /usr/bin/env python
from Tkinter import *
from tkSnack import *
root = Tkinter.Tk()
root.geometry("650x560+100+80")
initializeSnack(root)
snd = Sound()
def start():
snd.record()
def stop():
snd.stop()
def play():
snd.play()
def save():
file = root.tk.call('eval', 'snack::getSaveFile')
snd.write(file)
c = SnackCanvas(height=500, width=820, bg='white')
c.pack()
c.create_waveform(1,1,sound=snd,width=1920,height=500,pixelspersec=500)
record=Button(root,width=50,height=50,fg='red', bitmap='snackRecord',command=start).place(x=5,y=501)
stop=Button(root,width=50,height=50,fg='black', bitmap='snackStop',command=stop).place(x=60,y=501)
play=Button(root,width=50,height=50,fg='black', bitmap='snackPlay', command=play).place(x=115,y=501)
save=Button(root,width=5,height=3,fg='black', text='Save', command=save).place(x=170,y=501)
root.mainloop()