


mp3 ID3 タグと MPEG 情報を解析するためのクラス (zend.com より) 実際のアプリケーションについては、http://feifei2.bjedu.gov.cn... を参照してください。
/*
* MP3 クラス
*
* rel. 0.1
*
* Copyright (c) 2000 Sumatra Solutions srl http://www.sumatrasolutions.com
* Ludovico Magnocavallo ludo@sumatrasolutions.com
*
* ライセンスの種類: GNU GPL http://www.gnu.org/ copyleft/gpl.html
*
*
* Perl Apache::MP3 モジュール (L. Stein) -- Apache ベースの mp3 サーバーを作成するための優れたモジュール
* Perl MP3::Info (C. Nandor) - - 非常に複雑で難しい内容ですが便利です
* Java クラス de.vdheide.mp3 (J. Vonderheide) -- 素晴らしい内容で、読みやすく、synchronize() メソッドをデバッグする必要がありました
*
* ID3v2 タグのサポートは未完了
*
* MP3 ヘッダーのリファレンス (http://www.mp3-tech.org/)
*
* // クイック スタート:
* $mp3 = new MP3($myfilepath);
* $mp3->get_info(); // $mp3->info 配列内のファイル情報
* $mp3->get_id3(); // $mp3->id3 配列の id3 情報
* $mp3->send_pls($HTTP_HOST) // プレイリスト URL 内のファイルへの物理パスを使用します
* $mp3->stream() // ファイルをブラウザにストリーミングします
*
* $Id: mp3.php,v 1.10 2000/07/18 11:05:16 ludo Exp $
*
*/
クラス MP3 {
var $id3_genres_array = array(
'ブルース', 'クラシック ロック'、'カントリー'、'ダンス'、'ディスコ'、'ファンク'、'グランジ'、'ヒップホップ'、'ジャズ'、'メタル'、'ニューエイジ'、'オールディーズ'、'その他'、'ポップ」、「R&B」、「ラップ」、「レゲエ」、「ロック」、「テクノ」、「インダストリアル」、
「オルタナティブ」、「スカ」、「デスメタル」、「いたずら」、「サウンドトラック」、ユーロテクノ」、「アンビエント」、「トリップホップ」、「ボーカル」、「ジャズ+ファンク」、「フュージョン」、「トランス」、「クラシック」、「インストゥルメンタル」、「アシッド」、「ハウス」、
「ゲーム」、「サウンドクリップ」、「ゴスペル」、「ノイズ」、「オルタナロック」、「ベース」、「ソウル」、「パンク」、「スペース」、「瞑想的」、「インストゥルメンタルポップ」、「インストゥルメンタルロック」 、「エスニック」、「ゴシック」、「ダークウェーブ」、
「テクノインダストリアル」、「エレクトロニック」、「ポップフォーク」、「ユーロダンス」、「ドリーム」、「サザンロック」、「コメディ」、「カルト」 、「ギャングスタ」、「トップ 40」、「クリスチャン ラップ」、「ポップ/ファンク」、「ジャングル」、「ネイティブ アメリカン」、「キャバレー」、
「ニュー ウェーブ」、「サイカデリック」、「レイブ」、「ショーチューンズ」 '、'トレーラー'、'ローファイ'、'トライバル'、'アシッドパンク'、'アシッドジャズ'、'ポルカ'、'レトロ'、'ミュージカル'、'ロックンロール'、'ハードロック'、'フォーク」、「フォーク/ロック」、「ナショナル フォーク」、
「スイング」、「ファスト フュージョン」、「ビボブ」、「ラテン」、「リバイバル」、「ケルティック」、「ブルーグラス」、「アバンギャルド」、「ゴシック」ロック」、「プログレッシブ ロック」、「サイケデリック ロック」、「シンフォニック ロック」、「スロー ロック」、「ビッグ バンド」、
「コーラス」、「イージーリスニング」、「アコースティック」、「ユーモア」、「スピーチ」、「シャンソン」、「オペラ」、「室内楽」、「ソナタ」、「交響曲」、「戦利品ベース」、「プリムス」 、「ポルノ グルーヴ」、「風刺」、「スロー ジャム」、「クラブ」、「タンゴ」、「サンバ」、
「フォークロア」、「バラード」、「パワー バラード」、「リズミック ソウル」、「フリースタイル」、 「デュエット」、「パンクロック」、「ドラムソロ」、「アカペラ」、「ユーロハウス」、「ダンスホール」
);
var $info_bitrates = array(
1 => array(
1 => array( 0 => 0, 16 => 32, 32 =&g t; 64、48 => 96、64 => 128 、80、96 => => 416, 224 => 448, 240 => false)、
=> array( 0 => 0, 16 => 48, 48 => 56, 64 => 64、80 => 96、128 => 160、176 => t ; 256, 208 => 320, 224 => false),
=> 0 => 16 => 40 48 => ; 48、64 => 56、80 => 80、128 => 160、176 => 192 、 192 => 224、208 => 256、224 => false)、
配列(
1 => array( 0 => 0, 16 = > 32、32 => 48、48 => 56、64 => 64、80 => 80、96 => 96、112 => 112、128 => 128、144 => 144、160 => 160、176 => 176、192 => 192、208 => 224、224 => 256、240 => false)、
2 => array( 0 => 0, 16 => 8, 32 => 16, 48 => 24, 64 => 32, 80 => 40, 96 => 48, 112 => 56, 128 => 64、144 => 96、176 => 144、240 =>
3 => array( 0 => 0, 16 => 8, 32 => 16, 48 => 24, 64 => 32, 80 => 40, 96 => 48, 112 => 56, 128 => 64、144 => 96、176 => 144、240 =>
) 、
);
var $info_versions = array(0 => "予約済み", 1 => "MPEG バージョン 1", 2 => "MPEG バージョン 2", 2.5 => "MPEG バージョン 2.5");
var $info_layers = array("予約済み", "レイヤー I", "レイヤー II", "レイヤー III");
var $info_sampling_rates = array(
0 =>array(0 => false, 4 => false, 8 => false, 12 => false),
1 => array(0 => "44100 Hz"、4 => "48000 Hz"、8 => "32000 Hz"、12 => false)、
2 => array(0 => "22050 Hz"、4 => "24000 Hz"、8 => "16000 Hz"、12 => false)、
2.5 => array(0 => "11025 Hz", 4 => "12000 Hz", 8 => "8000 Hz", 12 => false),
);
var $info_channel_modes = array(0 => "ステレオ"、64 => "ジョイント ステレオ"、128 => "デュアル チャネル"、192 => "シングル チャネル");
var $file = "";
var $fh = false;
var $error = false;
var $id3_parsed = false;
var $id3 = array(
/* 「タグ」 => 「」,
「タイトル」 => 「不明」
「作者」 => 「不明」、
「アルバム」 => ",
「年」 => 「不明」,
「コメント」 => 「不明」,
「ジャンルid」 => 0,
「ジャンル」 => 「不明」
*/ );
var $url = "";
var $info = array();
function mp3($file, $exitonerror=true) {
if (file_exists($file)) {
$this->file = $file;
$this->fh = fopen($this->file,"r");
グローバル $HTTP_HOST、$PHP_SELF;
$this->url = "http://$HTTP_HOST/$PHP_SELF";
} else {
$this->error = "そのようなファイルはありません";
if ($exitonerror) $this->exitonerror();
}
}
function exitonerror() {
echo($this->error);
終了します。
}
function set_id3($title = "", $author = "", $album = "", $year = "", $comment = "", $genre_id = 0) {
$this->error = false;
$this->wfh = fopen($this->file,"a");
fseek($this->wfh, -128, SEEK_END);
fwrite($this->wfh, Pack("a3a30a30a30a4a30C1", "TAG", $title, $author, $album, $year, $comment, $genre_id), 128);
fclose($this->wfh);
}
function get_id3() {
$this->id3_parsed = true;
fseek($this->fh, -128, SEEK_END);
$line = fread($this->fh, 10000);
if (preg_match("/^TAG/", $line)) {
$this->id3 = unpack("a3tag/a30title/a30author/a30album/a4year/a30comment/C1genre_id", $line);
$this->id3["genre"] = $this->id3_genres_array[$this->id3]["genre_id"]];
return(true);
} else {
$this->error = "idv3 タグが見つかりません";
return(false);
}
}
// get_info() ヘルパーメソッド
function Calculate_length($id3v2_tagsize = 0) {
$length = Floor(($this->info["filesize"] - $ id3v2_tagsize) / $this->gt; info["ビットレート"] * 0.008);
$min = フロア($length / 60);
$min = strlen($min) == 1 ? "0$分" : $分;
$sec = $length % 60;
$sec = strlen($sec) == 1 ? "0$秒" : $秒;
return("$min:$sec");
}
function get_info() {
// $this->get_id3v2header();
$sec = $this->synchronize();
// echo("2 バイト目 = $秒 " . decbin($秒) . "
");
$third = ord(fread($this->fh, 1));
$fourth = ord(fread($this->fh, 1));
$this->info["version_id"] = ($second & 16) > 0 ? ( ($秒 & 8) > 0 ? 1 : 2 ) : ( ($秒 & 8) > 0 ? 0 : 2.5 );
$this->info["version"] = $this->info_versions[ $this->info]["version_id"] ];
$this->info["layer_id"] = ($second & 4) > 0 ? ( ($秒 & 2) > 0 ? 1 : 2 ) : ( ($秒 & 2) > 0 ? 3 : 0 ); ;
$this->info["layer"] = $this->info_layers[ $this->info]["layer_id"] ];
$this->info["保護"] = ($秒 & 1) > 0 ? "CRC なし" : "CRC";
$this->info["bitrate"] = $this->info_bitrates[ $this->info]["version_id"] ][ $this->info]["layer_id"] ][ ($ 3 番目 & 240) ];
$this->info["sampling_rate"] = $this->info_sampling_rates[ $this->info]["version_id"] ][ ($third & 12)];
$this->info["padding"] = ($third & 2) > 0 ? "オンオフ";
$this->info["private"] = ($third & 1) > 0 ? "オンオフ";
$this->info["channel_mode"] = $this->info_channel_modes[$fourth & 192];
$this->info["著作権"] = ($fourth & 8) > 0 ? "オンオフ";
$this->info["original"] = ($fourth & 4) > 0 ? "オンオフ";
$this->info["filesize"] = filesize($this->file);
$this->info["length"] = $this->calculate_length();
}
function synchronize() {
$finished = false;
rewind($this->fh);
while (!$finished) {
$skip = ord(fread($this->fh, 1));
// echo("inside synchronize() Skip = $skip " .decbin($skip) . "
");
while ($skip != 255 && !feof($this->fh)) {
$skip = ord(fread($this->fh, 1));
// echo("inside synchronize() Skip = $skip " .decbin($skip) . "
");
}
if (feof($this->fh)) {
$this->error("情報ヘッダーが見つかりません");
if ($exitonerror) $this->exitonerror();
}
$store = ord(fread($this->fh, 1));
// echo("inside synchronize() store = $store " .decbin($store) . "
");
if ($store >= 225) {
$finished = true;
} else if (feof($this->fh)) {
$this->error("情報ヘッダーが見つかりません");
if ($exitonerror) $this->exitonerror();
}
}
return($store);
}
function get_id3v2header() {
$bytes = fread($this->fh, 3);
if ($bytes != "ID3") {
echo("ID3 タグなし");
return(false);
}
// メジャーバージョンとマイナーバージョンを取得します
$major = fread($this->fh, 1);
$minor = fread($this->fh, 1);
echo("ID3v$major.$minor");
}
function stream() {
if (!$this->id3_parsed) {
$this->get_id3();
}
header("ICY 200 OKrn");
header("icy-notice1:このストリームにはシャウトキャスト/アイスキャスト互換プレーヤーが必要です。
rn");
header("icy-notice2:php MP3 class
rn");
header("icy-name:" . (count($this->id3) > 0 ? $this->id3["title"] . " - " . $this->id3["author" ] . " - " . $this->id3["アルバム"] : $this-> ファイル);
header("icy-genre:" . (count($this->id3) > 0 ? $this->id3["genre"] : "unspecified") . "rn");
header("icy-url:bbbrn");
header("icy-pub:1rn");
header("icy-br:320rn");
rewind($this->fh);
fpassthru($this->fh);
}
function send_playlist_header($numentries = 1) {
header("Content-Type: audio/mpegurl;");
echo("[プレイリスト]rnrn");
echo("NumberOfEntries=$numentriesrn");
}
function send_pls($server) {
$this->send_playlist_header();
$path = "/";
$path_array =explode("/", dirname($this->file));
while(list($key,$val) = each($path_array)) {
$path .= 空($val) ? "" : rawurlencode($val);
}
$path .= "/";
$file = rawurlencode(preg_replace("/.mp3$/", "", Basename($this->file)));
echo("File1=http://$server$path$file.mpsrn");
}
function close() {
@fclose($this->fh);
}
}
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ログイン画面に「組織から PIN の変更を求められています」というメッセージが表示されます。これは、個人のデバイスを制御できる組織ベースのアカウント設定を使用しているコンピューターで PIN の有効期限の制限に達した場合に発生します。ただし、個人アカウントを使用して Windows をセットアップした場合、エラー メッセージは表示されないのが理想的です。常にそうとは限りませんが。エラーが発生したほとんどのユーザーは、個人アカウントを使用して報告します。私の組織が Windows 11 で PIN を変更するように要求するのはなぜですか?アカウントが組織に関連付けられている可能性があるため、主なアプローチはこれを確認することです。ドメイン管理者に問い合わせると解決できます。さらに、ローカル ポリシー設定が間違っていたり、レジストリ キーが間違っていたりすると、エラーが発生する可能性があります。今すぐ

Windows 11 では、新鮮でエレガントなデザインが前面に押し出されており、最新のインターフェイスにより、ウィンドウの境界線などの細部をカスタマイズして変更することができます。このガイドでは、Windows オペレーティング システムで自分のスタイルを反映した環境を作成するのに役立つ手順について説明します。ウィンドウの境界線の設定を変更するにはどうすればよいですか? + を押して設定アプリを開きます。 Windows [個人用設定] に移動し、[色の設定] をクリックします。ウィンドウの境界線の色の変更設定ウィンドウ 11" width="643" height="500" > [タイトル バーとウィンドウの境界線にアクセント カラーを表示する] オプションを見つけて、その横にあるスイッチを切り替えます。 [スタート] メニューとタスク バーにアクセント カラーを表示するにはスタート メニューとタスク バーにテーマの色を表示するには、[スタート メニューとタスク バーにテーマを表示] をオンにします。

デフォルトでは、Windows 11 のタイトル バーの色は、選択したダーク/ライト テーマによって異なります。ただし、任意の色に変更できます。このガイドでは、デスクトップ エクスペリエンスを変更し、視覚的に魅力的なものにするためにカスタマイズする 3 つの方法について、段階的な手順を説明します。アクティブなウィンドウと非アクティブなウィンドウのタイトル バーの色を変更することはできますか?はい、設定アプリを使用してアクティブなウィンドウのタイトル バーの色を変更したり、レジストリ エディターを使用して非アクティブなウィンドウのタイトル バーの色を変更したりできます。これらの手順を学習するには、次のセクションに進んでください。 Windows 11でタイトルバーの色を変更するにはどうすればよいですか? 1. 設定アプリを使用して + を押して設定ウィンドウを開きます。 Windows「個人用設定」に進み、

Windows インストーラー ページに「問題が発生しました」というメッセージとともに「OOBELANGUAGE」というメッセージが表示されますか?このようなエラーが原因で Windows のインストールが停止することがあります。 OOBE とは、すぐに使えるエクスペリエンスを意味します。エラー メッセージが示すように、これは OOBE 言語の選択に関連する問題です。心配する必要はありません。OOBE 画面自体から気の利いたレジストリ編集を行うことで、この問題を解決できます。クイックフィックス – 1. OOBE アプリの下部にある [再試行] ボタンをクリックします。これにより、問題が発生することなくプロセスが続行されます。 2. 電源ボタンを使用してシステムを強制的にシャットダウンします。システムの再起動後、OOBE が続行されます。 3. システムをインターネットから切断します。 OOBE のすべての側面をオフライン モードで完了する

タスクバーのサムネイルは楽しい場合もありますが、気が散ったり煩わしい場合もあります。この領域にマウスを移動する頻度を考えると、重要なウィンドウを誤って閉じてしまったことが何度かある可能性があります。もう 1 つの欠点は、より多くのシステム リソースを使用することです。そのため、リソース効率を高める方法を探している場合は、それを無効にする方法を説明します。ただし、ハードウェアの仕様が対応可能で、プレビューが気に入った場合は、有効にすることができます。 Windows 11でタスクバーのサムネイルプレビューを有効にする方法は? 1. 設定アプリを使用してキーをタップし、[設定] をクリックします。 Windows では、「システム」をクリックし、「バージョン情報」を選択します。 「システムの詳細設定」をクリックします。 [詳細設定] タブに移動し、[パフォーマンス] の下の [設定] を選択します。 「視覚効果」を選択します

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

Windows 11 のディスプレイ スケーリングに関しては、好みが人それぞれ異なります。大きなアイコンを好む人もいれば、小さなアイコンを好む人もいます。ただし、適切なスケーリングが重要であることには誰もが同意します。フォントのスケーリングが不十分であったり、画像が過度にスケーリングされたりすると、作業中の生産性が大幅に低下する可能性があるため、システムの機能を最大限に活用するためにカスタマイズする方法を知る必要があります。カスタム ズームの利点: これは、画面上のテキストを読むのが難しい人にとって便利な機能です。一度に画面上でより多くの情報を確認できるようになります。特定のモニターおよびアプリケーションにのみ適用するカスタム拡張プロファイルを作成できます。ローエンド ハードウェアのパフォーマンスの向上に役立ちます。画面上の内容をより詳細に制御できるようになります。 Windows 11の使用方法

画面の明るさは、最新のコンピューティング デバイスを使用する上で不可欠な部分であり、特に長時間画面を見る場合には重要です。目の疲れを軽減し、可読性を向上させ、コンテンツを簡単かつ効率的に表示するのに役立ちます。ただし、設定によっては、特に新しい UI が変更された Windows 11 では、明るさの管理が難しい場合があります。明るさの調整に問題がある場合は、Windows 11 で明るさを管理するすべての方法を次に示します。 Windows 11で明るさを変更する方法【10の方法を解説】 シングルモニターユーザーは、次の方法でWindows 11の明るさを調整できます。これには、ラップトップだけでなく、単一のモニターを使用するデスクトップ システムも含まれます。はじめましょう。方法 1: アクション センターを使用する アクション センターにアクセスできる
