Answers:
你也可以用ffprobe
它的一部分ffmpeg
。
sudo apt-get install ffmpeg
ffprobe file.mp3
如果您不想要其他信息,例如轨道长度等,可以将输出与grep结合使用:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
或为了只得到作者:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
您可以使用逗号分隔其他标签,例如format_tags=title,album
。
我想在一个文件夹中的所有mp3文件中搜索关键字。该文件夹有486个文件,因此知道此处提到的最快解决方案变得很有趣。这是我使用的循环:
# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool
keyword='fill_me_in'
getTitleFF() { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL() { lltag --show-tags title "$1" | sed -nE 's/^ TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE 's/^=== TIT2 \([^)]*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }
for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
echo "=== getTitle${prog} ==="
time \
for file in *.mp3; do
if "getTitle${prog}" "$file" | grep -q "$keyword"; then
echo "$file"
fi
done
done
笔记:
lltag
并且mp3info
没有找到标题,因为我使用的文件带有ID3v2标签,请参阅@ s-prasanth的注释:如何在Shell中读取mp3标签?eyeD3
以编程方式使用存在问题,因为它使用颜色代码(粗体)。eyeD3
并且id3v2
(但仅适用于ID3 v1标签)在同一行返回标题和艺术家,这使事情变得更加复杂;因此getTitleEyed
有时getTitleId3
返回标题和艺术家,所以请不要复制粘贴这些功能。getTitleId3仅适用于ID3 v2标签,因为id3v2
ID3v1和ID3v2标签具有不同的格式,即
Title : Artist:
与ID3v2:
TIT2 (Title/songname/content description):
作为这5 eyeD3
个文件中唯一的程序,将为其中两个文件显示红色警告:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
好像这两个文件具有的ID3v1标签,因为这两个文件是唯一的地方lltag
,并mp3info
能获得冠军。我想知道这是否是一个错误,eyeD3
因为此处提到的其他程序都没有这些文件的问题...
结果(实时):
Program | Version | Time / s
----------+------------+-----------
exiftool | 10.25 | 49.5 ± 0.5
lltag | 0.14.5 | 41 ± 1.0
ffprobe | 3.1.3-1+b3 | 33 ± 0.5
eyeD3 | 0.6.18 | 24 ± 0.5
id3info | 3.8.3 | 4.2 ± 0.1
id3v2 | 0.1.12 | 2.9 ± 0.1
id3tool | 1.2a | 1.7 ± 0.1
mp3info | 0.8.5a | 1.4 ± 0.1
从时间id3tool
上讲,赢家是(mp3info更快,但不适用于ID3 v2)。
id3v2
速度也相当快,但是该getTitleId3
功能需要进行调整才能与ID3v1标签配合使用,这在最坏的情况下可能会使速度降低2倍。
id3info
您比较一下?
ffmpeg
还有一个优点:它可以处理aac
/ m4a
文件。其他工具似乎没有(或者您知道吗?)。我还将建议搜索其FORMAT
部分,以避免流中也包含title
等的情况ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
。
exiftool
或来读取标签ffprobe
。用于此工作的更专业的工具将metaflac --list
来自flac
软件包。对于ogg exiftool
也可以,但是也可以vorbiscomment -l
从vorbis-tools
包装中获得。奇怪的是,即使FLAC和OGG都有vorbis注释元数据vorbiscomment
,metaflac
也无法互换?
好的,我自己找到了一个程序。它称为mp3info,由
sudo apt-get install mp3info
要从文件中获取单个mp3标签,必须调用
mp3info -p %a file.mp3
给文件的艺术家。%a表示一个人想要获得演出者,其他标签还有其他一些键。
mp3info
。您可能要看一下id3v2
-它可以编辑/添加v2并显示v1和v2。如果您不喜欢它显示标签的方式,则可以编写一个脚本来运行id3v2
和适当处理输出。
-R
flag with grep
获得指定的输出。
Only ID3 versions 1.0 and 1.1 are supported
。
您可以使用eyed3。首先,从终端安装:
sudo apt-get install eyed3
然后,运行:
eyeD3 song.mp3
将其与合并在一起grep
即可获得特定的标签。
eyeD3 song.mp3 | grep artist
(要剥离所有mp3标签,请参见此处)
eyeD3
不正确eyed3
eyeD3 --plugin display -p "%t% by %a%" *
。
您可以尝试exiftool(在文件中读取和写入元信息)。
“ ExifTool是一个独立于平台的Perl库,还有一个命令行应用程序,用于读取,写入和编辑各种文件中的元信息。ExifTool支持许多不同的元数据格式,包括EXIF,GPS,IPTC,XMP,JFIF,GeoTIFF,ICC个人资料,Photoshop IRB,FlashPix,AFCP和ID3,以及佳能,卡西欧,FLIR,FujiFilm,GE,HP,JVC / Victor,柯达,Leaf,Minolta / Konica-Minolta,Motorola,尼康,任天堂,奥林巴斯/爱普生,松下/徕卡,宾得/旭,第一阶段,Reconyx,理光,三星,三洋,Sigma / Foveon和索尼。” - 由Phil Harvey制作的ExifTool
这是命令的示例:
exiftool test.mp3
ExifTool Version Number : 10.00
File Name : test.mp3
Directory : .
File Size : 8.2 MB
File Modification Date/Time : 2016:03:02 21:44:58+01:00
File Access Date/Time : 2016:04:06 21:34:01+02:00
File Inode Change Date/Time : 2016:03:02 21:45:36+01:00
File Permissions : rw-rw-r--
File Type : MP3
File Type Extension : mp3
MIME Type : audio/mpeg
MPEG Audio Version : 1
Audio Layer : 3
Sample Rate : 44100
Channel Mode : Stereo
MS Stereo : Off
Intensity Stereo : Off
Copyright Flag : False
Original Media : False
Emphasis : None
VBR Frames : 9544
VBR Bytes : 8467680
ID3 Size : 115419
Band : Tech N9ne Collabos
Album : Strangeulation (Deluxe Edition)
Composer : Tech N9ne Collabos
Genre : Rap & Hip-Hop
Copyright : 2014 Strange Music, Inc
Title : American Horror Story (feat. Ces Cru)
Artist : Tech N9ne Collabos
Track : 10
Year : 2014
Comment :
Lyrics :
Private : (Binary data 8192 bytes, use -b option to extract)
Picture MIME Type : image/jpeg
Picture Type : Front Cover
Picture Description :
Picture : (Binary data 104371 bytes, use -b option to extract)
Audio Bitrate : 272 kbps
Date/Time Original : 2014
Duration : 0:04:09 (approx)