如何在python中修改不正确的mp3歌曲长度

如何在python中修改不正确的mp3歌曲长度,python,mp3,duration,mutagen,Python,Mp3,Duration,Mutagen,我正在使用诱变剂修改文件“temp.mp3”的元数据 这首歌有三点长 当我尝试时: from mutagen.mp3 import MP3 audio = MP3('temp.mp3') print audio.info.length audio.info.length = 180 print audio.info.length audio.save() audio = MP3('temp.mp3') print audio.info.length 我得到以下输出: 424.791857143

我正在使用诱变剂修改文件“temp.mp3”的元数据

这首歌有三点长

当我尝试时:

from mutagen.mp3 import MP3
audio = MP3('temp.mp3')
print audio.info.length
audio.info.length = 180
print audio.info.length
audio.save()
audio = MP3('temp.mp3')
print audio.info.length
我得到以下输出:

424.791857143
180
424.791857143

因此,mp3的保存方法似乎没有记录我存储在info.length中的信息。如何将此数据存储到文件中?

这是很久以前提出的问题,但我发现自己也有同样的问题

在谷歌搜索了一番之后,我找到了使用ffmpeg编码器修复不正确元数据的方法

这里有一个解决方案,希望能为人们节省一些时间


我们可以使用ffmpeg复制文件,并使用以下命令自动修复错误的元数据:

ffmpeg -v quiet -i "sound.mp3" -acodec copy "fixed_sound.mp3"
-v quiet
修饰符阻止它将命令的详细信息打印到控制台

要检查是否已经有ffmpeg,请在命令行上运行
ffmpeg-version
。(如果没有,您可以从此处下载:)


我在下面写了一个函数,它应该可以做到这一点

导入操作系统
def修复持续时间(文件路径):
##为当前文件创建临时名称。
##即:“sound.mp3”->“sound\u temp.mp3”
temp_filepath=filepath[:len(filepath)-len('.mp3')]+'_temp'+'.mp3'
##将文件重命名为临时名称。
重命名(文件路径,临时文件路径)
##运行ffmpeg命令复制此文件。
##这将修复持续时间并使用原始名称创建新文件。
命令='ffmpeg-v quiet-i'+temp_filepath+'-acodec copy'+filepath+''
操作系统(命令)
##删除元数据中持续时间错误的临时文件。
删除操作系统(临时文件路径)