~/blog/retrieve-mp3-metadata-ffprobe
Published on

ffprobeでmp3のメタデータを取得する

2138文字4分で読めます–––
閲覧数
Authors
  • avatar
    Name
    Shou Arisaka nyapp.buzz/shou
    short bio
    Z世代の情報技術者。Next.jsで自作SNSを個人開発中。

自分の好きな曲、いつも聴いている曲をブログとかで紹介したいなーなんてとき、どうしましょうか。 曲名だけなら、フォルダを全選択してコピーすればいいかもしれません。

しかし、もし、さらにアーティスト名も書きたいなーという場合はどうしましょうか。

ここまで来るとプログラミングですが、フォルダーの特定のアーティストのみのタイトルを取得したい、なんて場合はどうしましょうか。

そんなとき役に立つのが、ffmpegの"ffprobe"です。

メタデータの種類を知りたい

そもそも、メタデータの種類が知りたい、という場合は、ffprobeコマンドです。 BPMってどう書くんやろ…みたいな場合。

ffprobe "0002 - Broken 8cmix.mp3"

Metadata:
encoder         : LAME 32bits version 3.99.5 (http://lame.sf.net)
title           : Broken 8cmix
artist          : iroha(sasaki)
album           : Sound Voltex Soundtrack
track           : 2
album_artist    : Various Artists
disc            : 1/3
TBPM            : 150
TLEN            : 107205

mp3のメタデータをCSVとして出力

format_tags=オプションを任意のメタデータに書き換えることで、出力を変えます。

for f in *; do 
 echo "\
 $(ffprobe -loglevel error -show_entries format_tags=track -of default=noprint_wrappers=1:nokey=1 "$f"),\
 $(ffprobe -loglevel error -show_entries format_tags=title -of default=noprint_wrappers=1:nokey=1 "$f"),\
 $(ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 "$f")\
 " 
done

mp3のメタデータをCSVとして出力(ダブルクォーテーションあり)

for f in *; do 
 echo "\
 \"$(ffprobe -loglevel error -show_entries format_tags=track -of default=noprint_wrappers=1:nokey=1 "$f")\",\
 \"$(ffprobe -loglevel error -show_entries format_tags=title -of default=noprint_wrappers=1:nokey=1 "$f")\",\
 \"$(ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 "$f")\"\
 " 
done

他の機能

  • 曲数を知りたい

| wc -lで出力の行数を数えることで、曲数を数えることができます。

  • mp3info

ちなみに、mp3infoという選択肢もありますが、 mp3infoは不具合が多いですので非推奨です。

$ mp3info -p %t "0002 - Broken 8cmix.mp3"
%a
$ mp3info -p %t "0008 - smoooochã»âã» KN mix.mp3"
smooooch??? KN mix

文字化けしてたり、なんかよくわからない変換されてたり。だめですね。

avatar

Shou Arisaka

情報技術者 / Z世代プログラマー / SaaSアプリやSNSを開発
今すぐ話そう!

15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。

Created with Fabric.js 5.2.4 何かご質問がありますか?