查找mp3文件的时长

42 投票
5 回答
60087 浏览
提问于 2025-04-16 17:50

我有一段代码:

import glob,os
import random


path = 'C:\\Music\\'
aw=[]
for infile in glob.glob( os.path.join(path,'*.mp3') ):
    libr = infile.split('Downloaded',1)



    aw.append(infile)
aww = -1
while 1:
    aww += 1
    print len(aw),aww

    random.shuffle(aw)
    awww = aw[aww]
    os.startfile(awww)

但是它的功能只是不断播放所有的歌曲,没有停下来。我想,如果我能找到当前正在播放的歌曲的长度,就可以用“time”模块的(sleep)属性在歌曲结束后继续播放。然而,我找不到在Windows上如何获取歌曲长度的方法。有没有人知道怎么解决我的问题?

5 个回答

11

新版本的 python-ffmpeg 提供了一个封装函数,可以用来调用 ffprobe。获取视频时长的示例代码如下:

import ffmpeg
print(ffmpeg.probe('in.mp4')['format']['duration'])

可以在这里找到更多信息: https://github.com/kkroening/ffmpeg-python/issues/57#issuecomment-361039924

14

你可以使用FFMPEG这个库:

    args=("ffprobe","-show_entries", "format=duration","-i",filename)
    popen = subprocess.Popen(args, stdout = subprocess.PIPE)
    popen.wait()
    output = popen.stdout.read()

然后输出结果将会是:

[FORMAT]
duration=228.200515
[/FORMAT]
99

你可以使用 mutagen 这个工具来获取歌曲的时长(具体可以参考 教程):

from mutagen.mp3 import MP3
audio = MP3("example.mp3")
print(audio.info.length)

撰写回答