用Pygame获取歌曲长度

12 投票
3 回答
14465 浏览
提问于 2025-04-16 22:51

我正在制作一个广播自动化程序,但我不知道怎么让一个计时器倒计时,显示歌曲剩下的秒数。我现在在用Pygame,不想为了这个再加载其他工具包。目前我能做到的是让计时器从零开始往上计时,代码是这样的:

import pygame

#setup music
track = "Music/Track02.wav"
pygame.mixer.music.load(track)
pygame.mixer.music.play()
print("Playing Music")
while(pygame.mixer.music.get_busy()):
    print "\r"+str(pygame.mixer.music.get_pos()),

但是我不知道怎么在没有播放歌曲的情况下,获取歌曲的总时长并进行倒计时。

3 个回答

1

查看一下文档。根据网站上的说明,这个函数可以返回一个声音对象的长度,单位是秒。所以,剩余时间的计算方法就是 (pygame.mixer.music.get_length() - pygame.mixer.music.get_pos())*-1

这样显示出来的结果就是一个负数,就像大多数音乐播放器显示剩余时间的方式一样。需要注意的是,我这台电脑上没有安装pygame,所以无法进行测试。建议你还是去确认一下。

3

mutagen.mp3 可以用来找出音乐的长度。

首先:使用命令 pip install mutagen 安装

-> 导入:

from pygame import *
from mutagen.mp3 import MP3

-> 使用:

mixer.music.load('example.mp3')
song = MP3('example.mp3')
songLength = song.info.length
10

你也可以把这首歌当作普通的声音来加载,然后在用mixer.music播放的时候检查一下它的长度。

a = pygame.mixer.Sound("test.wav")
print("length",a.get_length())

撰写回答