red*_*pet 64 command-line mp3 tag id3
有没有办法从 shell 读取文件的 mp3 标签?类似于:
mp3tags MyFile.mp3 author应该输出 mp3 文件的作者标签。
mxm*_*nkn 71
您还可以使用ffprobewhich 是ffmpeg.
sudo apt-get install ffmpeg
ffprobe file.mp3
Run Code Online (Sandbox Code Playgroud)
如果您不想要其他信息,如轨道长度等,您可以将输出与 grep 结合使用:
sudo apt-get install ffmpeg
ffprobe file.mp3
Run Code Online (Sandbox Code Playgroud)
或者为了只得到作者:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Run Code Online (Sandbox Code Playgroud)
您可以通过用逗号分隔来选择其他标签,例如format_tags=title,album.
我想在文件夹中的所有 mp3 文件中搜索关键字。该文件夹有 486 个文件,因此了解此处提到的哪个解决方案最快变得很有趣。这是我使用的循环:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Run Code Online (Sandbox Code Playgroud)
笔记:
lltag并且mp3info没有找到标题,因为我使用的文件有 ID3v2 标签,请参阅 @s-prasanth 的评论:如何在 shell 中读取 mp3 标签?eyeD3 以编程方式使用是有问题的,因为它使用颜色代码(粗体)。eyeD3并且id3v2(但仅适用于 ID3 v1 标签)在同一行返回标题和艺术家,这使事情进一步复杂化;因此getTitleEyed,有时会同时getTitleId3返回标题和艺术家,所以请不要复制粘贴这些函数。getTitleId3 仅适用于 ID3 v2 标签,因为id3v2ID3v1- 和 ID3v2-标签具有不同的格式,即
Title : Artist:
Run Code Online (Sandbox Code Playgroud)
与 ID3v2 对比:
TIT2 (Title/songname/content description):
Run Code Online (Sandbox Code Playgroud)由于这 5 个程序中唯一的程序会为其中eyeD3两个文件打印红色警告:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Run Code Online (Sandbox Code Playgroud)
好像这两个文件具有的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
Run Code Online (Sandbox Code Playgroud)
从时间id3tool上看,这里的赢家是(mp3info 速度更快,但不适用于 ID3 v2)。
id3v2也相当快,但该getTitleId3功能需要调整才能与 ID3v1-tags 一起使用,最坏的情况可能会使其减慢 2 倍。
red*_*pet 26
好的,我自己找到了一个程序。它被称为 mp3info 并由
sudo apt-get install mp3info
Run Code Online (Sandbox Code Playgroud)
要从文件中获取单个 mp3 标签,必须调用
mp3info -p %a file.mp3
Run Code Online (Sandbox Code Playgroud)
这给出了文件的艺术家。%a 表示想要获取艺术家,其他标签还有其他一些键。
phi*_*hem 12
您可以使用eyed3。首先,从终端安装:
sudo apt-get install eyed3
Run Code Online (Sandbox Code Playgroud)
然后,运行:
eyeD3 song.mp3
Run Code Online (Sandbox Code Playgroud)
将其与grep在一行中获取特定标签相结合。
eyeD3 song.mp3 | grep artist
Run Code Online (Sandbox Code Playgroud)
(要去除所有 mp3 标签,请参见此处)
| 归档时间: |
|
| 查看次数: |
89154 次 |
| 最近记录: |