mbstring 擴充套件。AudioExif (門面)
├─ _AudioExif (基底:檔案開關、緩衝讀寫)
├─ _Mp3Exif (MP3 具體實作)
└─ _WmaExif (WMA 具體實作)
require 'AudioExif.class.php';
$ae = new AudioExif();
$file = '/path/to/song.mp3';
// 1. 檢查檔案完整性(僅 WMA 有效,MP3 恆回傳 true)
$ae->CheckSize($file);
// 2. 讀取標籤
$info = $ae->GetInfo($file);
print_r($info);
/*
Array
(
[Title] => 夜曲
[Artist] => 周傑倫
[AlbumTitle] => 十一月的蕭邦
[Year] => 2005
[Genre] => Pop
[Track] => 3
[ID3v1] => yes/no
[meta] => Array(...) // MP3 幀資訊:比特率、採樣率、聲道等
)
*/
// 3. 寫入標籤
$tags = [
'Title' => '新標題',
'AlbumTitle' => '新專輯名',
'Artist' => '新歌手',
'Year' => '2024',
'Genre' => 'Rock',
'Track' => 5, // 僅 MP3
];
$ae->SetInfo($file, $tags); // 回傳 true/false
bitrate、samrate、mode、layer 等技術參數。mb_convert_encoding 雙向轉換 GBK。// UCS-2LE (去除結尾雙位元組) → GBK
function dbcs_gbk($str) {
$str = substr($str, 0, -2);
return mb_convert_encoding($str, 'GBK', 'UCS-2LE');
}
// GBK → UCS-2LE (補雙位元組結尾)
function gbk_dbcs($str) {
$str = mb_convert_encoding($str, 'UCS-2LE', 'GBK');
$str .= "\0\0";
return $str;
}
is_writable($file))。CheckSize)依賴檔案長度與 Header 聲明長度一致。此類別提供零依賴(除 mbstring)、跨平台的音訊標籤讀寫能力,適合 CMS、音樂播放器、批次整理工具等場景。原始碼開放,可依需求擴充更多欄位(如 Composer、Lyrics、Cover Art)。