我想使用以下方法获取 .mp3 歌曲的时长(以秒为单位)mp3信息。
当我执行时
mp3info -p "%S" file.mp3
输出是
file.mp3 已损坏或不是标准 MP3 文件。
该文件 100% 正确。当我在另一台计算机上对同一文件执行该命令时,我得到了正确的信息。两台计算机上的 mp3info 的 rpm 版本相同。
有谁知道可能是什么问题?
答案1
您可以使用类似avconv
/ 的东西ffmpeg
,然后您应该能够grep
将其放下。我推荐它,因为它相当强大,并且应该可以超越损坏的标头:
$ avconv -i ~/Music/Aqua/Aquarium/*03*
avconv version 0.8.6-6:0.8.6-1ubuntu2, Copyright (c) 2000-2013 the Libav developers
built on Mar 30 2013 22:20:06 with gcc 4.7.2
[mp3 @ 0x733ce0] Header missing
[mp3 @ 0x732960] max_analyze_duration reached
[mp3 @ 0x732960] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from '/home/oli/Music/Aqua/Aquarium/Aqua - 03 - Barbie Girl.mp3':
Metadata:
title : Barbie Girl
track : 03/11
artist : Aqua
album : Aquarium
genre : European Pop
TLEN : 198008
album_artist : Aqua
TBPM : 130
date : 1999
Duration: 00:03:50.32, start: 0.000000, bitrate: 128 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
At least one output file must be specified
然后awk
随意应用:
$ avconv -i ~/Music/Aqua/Aquarium/*03* 2>&1 | awk '/Duration/ {print $2}' | tr -d ,
00:03:50.32