如何再使用一次相同的mp3文件?

梅林1230
import tkinter as tk 
from tkinter import filedialog
from pygame import mixer

mixer.init()

firsttime = False
song2switch = True

root = tk.Tk()
 
canvas = tk.Canvas(root, width=400, height=250)
canvas.pack()

def loadsong1():
    global song1
    song1 = tk.filedialog.askopenfile(parent=root, initialdir="C:/",title="choose first song",filetypes=[("mp3 files", ".mp3")])
def loadsong2():
    global song2
    song2 = tk.filedialog.askopenfile(parent=root, initialdir="C:/",title="choose second song",filetypes=[("mp3 files", ".mp3")])
def play():
    mixer.music.load(song1)
    mixer.music.play()
def switch():
    global firsttime
    global song2switch
    global time_of_song
    if firsttime == False:
        time_of_song = mixer.music.get_pos()
        time_of_song /= 1000
        mixer.music.stop()
        mixer.music.load(song2)
        mixer.music.play(start = time_of_song)
        firsttime = True
        song2switch = False
    else:
        if song2switch == False:
            time_of_song = mixer.music.get_pos()
            time_of_song /= 1000
            mixer.music.stop()
            mixer.music.load(song1)
            mixer.music.play(start = time_of_song)
            song2switch = True

playbutton = tk.Button(canvas,text="PLAY",command=play)
canvas.create_window(200,240,window=playbutton)
load1button = tk.Button(canvas, text="Load Song One",command=loadsong1)
canvas.create_window(100,240,window=load1button)
load2button = tk.Button(canvas, text="Load Song Two", command=loadsong2)
canvas.create_window(300,240,window=load2button)
switchbutton = tk.Button(canvas, text="SWITCH", command=switch)
canvas.create_window(200,200, window=switchbutton)

root.mainloop()


我正在尝试使这种音乐播放器可以在两首歌曲之间切换,同时保持彼此相同的时间(例如,当我切换已经播放一分钟的歌曲时,另一首将开始播放一分钟),但是当我尝试将其切换到第一首歌曲时,会出现此错误:

pygame.error:无法读取音频数据的前12个字节

我该如何解决?

acw1668

这是因为您已使用askopenfile(...)它将以读取模式打开所选文件并返回文件句柄

当您切换到时song2song1将关闭。当您想song1再次切换回时,mixer.music.load(song1)由于文件已关闭将失败并出现异常。

使用askopenfilename()代替askopenfile()

注意1:mixer.music.get_pos()返回elapsed相对于时间start,而不是开始时间。

注意2:两次切换后,您的切换逻辑将无法正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一次修剪多个mp3文件

来自分类Dev

我只希望音频mp3文件播放一次,但没有发生

来自分类Dev

如何使用ffmpeg修剪mp3文件?

来自分类Dev

寻求一个mp3文件

来自分类Dev

Ionic如何创建mp3文件?

来自分类Dev

如何分割mp3文件?

来自分类Dev

如何从内部存储播放mp3文件?

来自分类Dev

如何规范mp3文件中的声音

来自分类Dev

如何获得mp3文件的封面?

来自分类Dev

如何分割mp3文件?

来自分类Dev

如何“重新编码” mp3文件

来自分类Dev

如何删除mp3文件的元数据?

来自分类Dev

使用`say`前缀mp3文件的标题

来自分类Dev

使用Rails上传/播放mp3文件

来自分类Dev

如何使用laravel从文件夹中删除mp3文件

来自分类Dev

将多个.mp3文件串联为一个.mp3文件

来自分类Dev

解码mp3文件

来自分类Dev

复制Mp3文件

来自分类Dev

如何在Android中使用最新的NanoHTTPD 2.3.0来提供mp3文件?

来自分类Dev

如何在PHP中使用ffmpeg从mp3文件中获取专辑图像

来自分类Dev

如何在Windows Phone 8中使用mp3文件?

来自分类Dev

如何使用C ++在VLC中播放mp3文件

来自分类Dev

如何使用UnoPlatform将mp3文件嵌入IOS / Android / WebAssembly中

来自分类Dev

如何使用CrossMediaManager从Xamarin.Forms中的证书位置播放MP3文件

来自分类Dev

如何使用FFMpeg仅修剪mp3文件的开头和结尾的静音?

来自分类Dev

如何在Windows Phone 8中使用mp3文件?

来自分类Dev

如何在Java JMF中使用Socket编程流式传输Mp3文件

来自分类Dev

如何使用javascript仅加载mp3文件标题?

来自分类Dev

如何在Qualtrics上使用Java脚本控制要播放的mp3文件?