ホームページ  >  記事  >  バックエンド開発  >  PHPでswfファイルのヘッダーを解析する

PHPでswfファイルのヘッダーを解析する

WBOY
WBOYオリジナル
2016-06-13 13:08:22905ブラウズ

PHP
で swf ファイルのヘッダーを解析します この記事は http://www.dssky.net

から転載されています。最近、CSDN フォーラムで、PHP を使用して swf ファイルのフレーム番号を取得したいという投稿を目にしました。実際、彼らは swf ファイル形式を理解していません。swf ファイル形式の仕様は公開されており、ファイル ヘッダーの解析や swf の生成など、PHP を直接使用して swf ファイルを処理する方法についても多くのことがわかります。ファイルなど暇なときに、SWF ファイルを解析するための大雑把なクラスも書きました。
swf ファイルのヘッダーを解析するには、当然、swf ファイル形式の仕様を最初に理解する必要があります。 swf ファイル形式については仕様で詳しく説明されています。 swf ファイルのヘッダーについては、次の部分で構成されます:
+----------+---+--------+--------+-- - +----+
|ファイル ID|バージョン|ファイル サイズ|RECT フィールド|フレーム レート|フレーム番号|
+------+---+------ - -+--------+---+----+
「ファイル識別」は、ファイル圧縮フラグを含めて 3 バイトです。この 3 バイトの内容は「FWS」または「CWS」で、「C」で始まるものは、swf ファイルが圧縮出力であることを意味します (RECT フィールドの先頭からファイルの末尾まで、Zlib 標準が使用されます)。ファイル圧縮用)。
「バージョン」は、8 ビットの符号なし整数を格納するバイトです。エクスポートされたバージョンが 7 の場合、このバイトには 0x07 が格納されます。 「7」(0x37) に対応する ASCII 値。
「ファイル サイズ」ストレージは 4 バイトを占め、32 ビットの符号なし整数です。非圧縮 swf ファイルのサイズは、これらの 4 つのフィールドに 16 進数形式で格納されます。 -endian、つまり、下位バイトが最初になる「リトル エンディアン」モードで保存されます。解析するときは、バイト順序に注意する必要があります。たとえば、swf ファイルのサイズが 471 バイトの場合、この 4 バイトに格納される内容は、下位から上位まで 0xd7、0x01、0x00、0x00 になります。
「フレーム レート」は 2 バイトを占め、1 秒あたりに再生されるフレーム数を示します。格納方法は 8.8、合計 16 ビットの固定小数点数です。整数部分は上位ビット (つまり、 2 番目のバイト)、小数部分は下位ビット (最初のバイト) にあり、バイトごとに整列されます。たとえば、10 進数の 7.5 は 16 進数では 0x07.80 と表され、最初に下位桁、最後に上位桁に従って、これらの 16 ビットは次のバイナリ コード 10000000 00000111 として格納されます。
「フレーム番号」は 2 バイトを占め、16 ビットの符号なし整数で、swf ファイル内のフレームの総数を示します。保存方法は「ファイルサイズ」の保存方法と同様です。
理解しにくいのは、swf ファイル形式仕様で定義されている「bit_value」を使用して格納される RECT フィールドです。このストレージ機能はバイトを節約できますが、値はバイトにまたがります。このセクションのストレージ コンテンツは、「twip」(「twip」と訳され、1 ピクセル = 20twips)単位で表される再生ウィンドウのサイズです。 Nbit に分割され、次のフィールドの bit_value ビット長を表します。Xmin、Xmax、Ymin、Ymax はそれぞれ X 軸方向と Y 軸方向の最小値と最大値を表します。
まず、圧縮パッケージのアドレスである bit_value について説明します。
swfHeaderParser
さらに、関連するコンテンツは多くの海外 Web サイトで見つけることができます。興味のある方は、以下の 2 つのアドレスを参照してください。外。
php を使用した swf ファイル ヘッダーの解析について:
http://www.zend.com/codex.php?id=1382&single=1
php を使用した swf ファイルの生成について:
http://freemovie.sourceforge.net/
関連ログ
PHP サーバー プラットフォームのクイック ビルド プログラム....

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。