<?php
// AudioExif.class.php
// 用PHP進行音頻文件頭部信息的讀取與寫入
// 目前只支持 WMA 和 MP3 兩種格式, 只支持常用的幾個頭部信息
//
// 寫入信息支持: Title(名稱), Artist(藝術家), Copyright(版權), Description (描述)
// Year(年代), Genre (流派), AlbumTitle (專輯標題)
// 其中 mp3 和 wma 略有不同, 具體返回的信息還可能更多, 但只有以上信息可以被寫入
// mp3 還支持 Track (曲目編號寫入)
// 對于 MP3 文件支持 ID3v1也支持ID3v2, 讀取時優先 v2, 寫入時總是會寫入v1, 必要時寫入v2
//
// 用法說明: (由于 wma 使用 Unicode 存取, 故還需要 mb_convert_encoding() 擴展
// 返回數據及寫入數據均為 ANSI 編碼, 即存什么就顯示什么 (中文_GB2312)
//
// require ('AudioExif.class.php');
// $AE = new AudioExif;
// $file = '/path/to/test.mp3';
//
// 1. 檢查文件是否完整 (only for wma, mp3始終返回 true)
//
// $AE->CheckSize($file);
//
// 2. 讀取信息, 返回值由信息組成的數組, 鍵名解釋參見上方
//
// print_r($AE->GetInfo($file));
//
// 3. 寫入信息, 第二參數是一個哈希數組, 鍵->值, 支持的參見上方的, mp3也支持 Track
// 要求第一參數的文件路徑可由本程序寫入
// $pa = array('Title' => '新標題', 'AlbumTitle' => '新的專輯名稱');
// $AE->SetInfo($file, $pa);
//
// 版本: 0.1
// 作者: hightman
// QQ群: 17708754 (非純PHP進階交流群)
// 時間: 2007/01/25
// 其它: 該插件花了不少時間搜集查找 wma及mp3 的文件格式說明文檔與網頁, 希望對大家有用.
// 其實網上已經有不少類似的程序, 但對 wma 實在太少了, 只能在 win 平臺下通過 M$ 的
// API 來操作, 而 MP3 也很少有可以在 unix/linux 命令行操作的, 所以特意寫了這個模塊
//
// 如果發現 bug 或提交 patch, 或加以改進使它更加健壯, 請告訴我.
// (關于 ID3和Wma的文件格式及結構 在網上應該都可以找到參考資料)
//
if (!extension_loaded('mbstring'))
{
trigger_error('PHP Extension module `mbstring` is required for AudioExif', E_USER_WARNING);
return true;
}
// the Main Class
class AudioExif
{
// public vars
var $_wma = false;
var $_mp3 = false;
// Construct
function AudioExif()
{
// nothing to do
}
// check the filesize
function CheckSize($file)
{
$handler = &$this->_get_handler($file);
if (!$handler) return false;
return $handler->check_size($file);
}
// get the infomations
function GetInfo($file)
{
$handler = &$this->_get_handler($file);
if (!$handler) return false;
return $handler->get_info($file);
}
// write the infomations
function SetInfo($file, $pa)
{
if (!is_writable($file))
{
trigger_error('AudioExif: file `' . $file . '` can not been overwritten', E_USER_WARNING);
return false;
}
$handler = &$this->_get_handler($file);
if (!$handler) return false;
return $handler->set_info($file, $pa);
}
// private methods
function &_get_handler($file)
{
$ext = strtolower(strrchr($file, '.'));
$ret = false;
if ($ext == '.mp3')
{ // MP3
$ret = &$this->_mp3;
if (!$ret) $ret = new _Mp3Exif();
}
else if ($ext == '.wma')
{ // wma
$ret = &$this->_wma;
if (!$ret) $ret = new _WmaExif();
}
else
{ // unknown
trigger_error('AudioExif not supported `' . $ext . '` file.', E_USER_WARNING);
}
return $ret;
}
}
// DBCS => gb2312
function dbcs_gbk($str)
{
// strip the last "
主站蜘蛛池模板:
临澧县|
苏州市|
乌鲁木齐市|
托克逊县|
朝阳区|
大新县|
武陟县|
奇台县|
富裕县|
辽中县|
安庆市|
桃园县|
苍山县|
壤塘县|
融水|
石门县|
剑川县|
玛多县|
措美县|
星子县|
隆尧县|
榕江县|
凌源市|
阜南县|
开江县|
宁晋县|
峨边|
黔西|
曲麻莱县|
宁陕县|
乾安县|
任丘市|
伊金霍洛旗|
万盛区|
海阳市|
泗洪县|
蚌埠市|
上栗县|
察雅县|
玛多县|
米易县|