シェルでmp3タグを読み取る方法


53

シェルからファイルのmp3タグを読み取る方法はありますか?次のようなもの: mp3tags MyFile.mp3 authormp3-fileのauthor-tagを出力する必要があります。

回答:


47

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でのコメントを見るので、タイトルを見つけることができませんシェルでmp3タグを読み取るためにどのように?
  • eyeD3 カラーコード(太字)を使用するため、プログラムで使用するには問題があります。
  • eyeD3またid3v2(ただし、ID3 v1タグの場合のみ)タイトルとアーティストを同じ行に返すため、さらに複雑になります。そのためgetTitleEyed、場合によってgetTitleId3はタイトルとアーティストの両方を返すため、これらの関数をコピー&ペーストしないでください。
  • getTitleId3はid3v2、ID3v1タグとID3v2-tagsの形式が異なるため、ID3 v2タグに対してのみ機能します。

    Title  :                                 Artist:    
    

    vs. ID3v2:

    TIT2 (Title/songname/content description): 
    
  • これらの5つの唯一のプログラムはeyeD3、2つのファイルに対して赤い警告を出力します。

    Invalid mode/bitrate combination for layer II
    No ID3 v1.x/v2.x tag found!
    

    これら2つのファイルが唯一のもの場所であるため、これら2つのファイルは、はID3v1タグを持っているように思えるlltagmp3infoタイトルを取得することができます。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-tagsでも機能するように調整する必要があり、最悪の場合、係数2で遅くなる可能性があります。


1
ワオ。私は長年exiftoolのパワーユーザーであり、サウンドファイルのメタデータも読み取れるとは思いもしませんでした!ffprobe(または私の場合はavprobe)ソリューションも素晴らしいです、ありがとう。これがベストアンサーです!
-marlar

1
大変な作業をありがとう!これらのツールの一部は、Fedoraのパッケージマネージャーから利用できません。あなたは含まれてもらえid3infoあなた比較して?
ヴィテニスビバイニス16年

ffmpegもう一つの利点があります:aac/ m4aファイルで動作します。他のツールはそうではないようです(または、他のツールを知っていますか?またFORMAT、そのセクションを検索することをお勧めします。これには、ストリームにtitleなども含まれる場合を避けるためffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'です。
ジョナサンY.

@JonathanY。M4Aコンテナファイルに保存されたAACエンコードオーディオは非ID3メタデータを持っているため、ffmpegおよびexiftoolでしか読み取ることができず、私の回答では選択できません。
mxmlnkn

FLACには、MP4 / M4Aとは異なる別のメタデータ形式、つまりvorbisコメントメタデータがありますが、タグはexiftoolまたはで読み取ることもできますffprobe。このジョブに特化したツールはmetaflac --listflacパッケージにあります。ogg exiftoolでも動作vorbiscomment -lvorbis-toolsますが、パッケージからもあります。変なふうvorbiscommentmetaflacFLACやOGG Vorbisのは、両方のCOMENTメタデータが持っているにもかかわらず、交換することができないのですか?
mxmlnkn

26

OK、私は自分でプログラムを見つけました。これはmp3infoと呼ばれ、インストールされます

sudo apt-get install mp3info

ファイルから単一のmp3タグを取得するには、

mp3info -p %a file.mp3

ファイルのアーティストを提供します。%aは、アーティストを取得したいことを意味し、他のタグには他のキーがあります。


20
追加情報:mp3タグID3V1、id3v2.2(廃止)、id3v2.3、id3v2.4の4種類の規格がありますen.wikipedia.org/wiki/ID3が。ファイルにはv1および/またはv2タグを含めることができます(はい、v1とv2は共存できますが、v2.xとv2.yは共存できません)。v2.3が最も広く使用されていると思います。ibiblio.org/mp3info(Todoを参照)によると、v2タグはによってサポートされていませんmp3info。ご覧になりたいかもしれませんid3v2-v2を編集/追加し、v1とv2を表示できます。タグの表示方法が気に入らない場合はid3v2、出力を適切に実行および処理するスクリプトを作成できます。
S Prasanth

@SPrasanth特定のタグを表示する方法。たとえば、mp3ファイルのアーティストのみですか?
ゴータムゴパラクリシュナン14

@SPrasanthわかった。指定した出力を取得するために-Rwith grepを使用していることに感謝します。
ゴーサムゴパラクリシュナン

%tを使用してトラックタイトルを印刷すると、クリップされた状態で印刷されます。
Tulainsコルドバ

1
残念ながら:Only ID3 versions 1.0 and 1.1 are supported
simlev

11

eyed3を使用できます。まず、ターミナルからインストールします。

sudo apt-get install eyed3

次に、実行します:

eyeD3 song.mp3

それと組み合わせて、grep特定のタグを1行で取得します。

eyeD3 song.mp3 | grep artist

(すべてのmp3タグを削除するには、こちらを参照してください)


1
私はこれを試しましたが、使用するコマンドはeyeD3で、大文字のDが付いています;)。しかし、mp3infoという名前の別のツールが見つかりました。これは、私が好むgrepを使用せずにmp3タグを出力できます。
red_trumpet

それはID3v2ので動作しますが、@red_trumpetは右であるため、eyeD3が私のために良い作品、コマンドがあるべきeyeD3ではないeyed3
bmaupin

表示プラグインを使用して、タグを目的の形式で出力しますeyeD3 --plugin display -p "%t% by %a%" *
simlev

これはすべてのタグを表示しません。たとえば、ISRCは表示しません。下記のid3v2プログラムもISRCを返しますが、期間はありません...
minyves

8

id3v2を使用することを好みid3v2 -l somefile.mp3ます。より具体的な使用方法については、id3v2のマニュアルページを参照してください。


これは素晴らしく、非常にうまく機能します
-jpo38

間違いなく最良の答えであるはずです、他のすべてのツールはいくつかのディストリビューションに依存関係の問題があります。
セルジオ

mid3v2Unicodeサポートがないため、代わりにこちらをお勧めします。また、id3v2の最終更新は2013年でした。
パブロA

2

exiftool(ファイル内のメタ情報の読み書き)を試すことができます。

「ExifToolは、プラットフォームに依存しないPerlライブラリであり、さまざまなファイルのメタ情報の読み取り、書き込み、編集を行うコマンドラインアプリケーションです。ExifToolは、EXIF、GPS、IPTC、XMP、JFIF、GeoTIFF、ICCプロファイル、Photoshop IRB、FlashPix、AFCP、ID3、およびCanon、Casio、FLIR、FujiFilm、GE、HP、JVC / Victor、Kodak、Leaf、Minolta / Konica-Minolta、Motorolaによる多くのデジタルカメラのメーカーノート、ニコン、任天堂、オリンパス/エプソン、パナソニック/ライカ、ペンタックス/アサヒ、フェーズ1、レコニクス、リコー、サムスン、三洋、シグマ/フォビオン、ソニー。- フィル・ハーヴェイ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)

1

lltagmp3 / ID3以上のものをサポートするソリューションを探しているかどうかを確認してください。

以下でインストールします:

sudo apt-get install lltag

すべてのタグを表示するには:(-Sショー用)

lltag -S somefile.mp3

特定のタグを表示するには:

lltag --show-tags artist,album,title,number somefile.mp3

0

ビーツ

あなたが開始することができ、このスクリーンキャスト取得開始ガイド

次のいずれかをインストールします。

pip install beets  # latest version
apt install beets  # repo version

また:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.