動かざることバグの如し

近づきたいよ 君の理想に

PHPを使ってmp3のタグ情報を取得する方法

getID3ってのを使えばできる。

インストール

ubuntu最高や

sudo apt-get install php-getid3

これで/usr/share/php-getid3にインストールされる。

サンプル

<?php
$filename = 'hogehoge.mp3';
require_once('/usr/share/php-getid3/getid3.php');
$getID3 = new getID3();
$fileInfo = $getID3->analyze($filename);
getid3_lib::CopyTagsToComments($fileInfo);
//曲名
echo $fileInfo['tags']['id3v2']['title'][0] . "<br>";
//アーティスト名
echo $fileInfo['tags']['id3v2']['artist'][0] . "<br>";
//アルバム名
echo $fileInfo['tags']['id3v2']['album'][0] . "<br>";
//ビットレート
echo $fileInfo['audio']['bitrate'] . "<br>";
//曲時間
echo $fileInfo['playtime_string'] . "<br>";
//曲時間(秒)
echo $fileInfo['playtime_seconds'] . "<br>";

他にも色々できるけど基本的にはこんな感じ

ファイル名について

絶対パスでも相対パス両方いける。が、ファイル名に日本語が含まれている場合は正常に動作してくれない。そこで以下のコードを入れる

$filename = mb_convert_encoding($filename, "SJIS", "auto");

$getID3->setOption(array('encoding' => 'UTF-8'));

以下

<?php
$filename = 'こんなに近くで.mp3';
$filename = mb_convert_encoding($filename, "SJIS", "auto");
require_once('/usr/share/php-getid3/getid3.php');
$getID3 = new getID3();
$getID3->setOption(array('encoding' => 'UTF-8'));
$fileInfo = $getID3->analyze($filename);
getid3_lib::CopyTagsToComments($fileInfo);
//曲名
echo $fileInfo['tags']['id3v2']['title'][0] . "<br>";
//アーティスト名
echo $fileInfo['tags']['id3v2']['artist'][0] . "<br>";
//アルバム名
echo $fileInfo['tags']['id3v2']['album'][0] . "<br>";
//ビットレート
echo $fileInfo['audio']['bitrate'] . "<br>";
//曲時間
echo $fileInfo['playtime_string'] . "<br>";
//曲時間(秒)
echo $fileInfo['playtime_seconds'] . "<br>";