マルチメディアの画像・動画処理するPHPプログラミング
マルチメディアの画像・動画処理するPHPプログラミングとは
PHPの画像・動画プログラミング概要※画像クリックで拡大表示
※アイコンの機能:表示 実行 ダウンロード
- 静止画と動画のPHPプログラム編集・保存の概要は、
- マルチメディアデータを扱う上で、「静止画」と「動画」に分類されます。
- 「静止画」は、「image系」と「draw系」に分類することができます。「image系」を扱うPHP関数やクラスは「ImageMagick」「image」に代表され、「draw系」は「GD」です。デジタルカメラのメタ情報を取得するには、「Exif」があります。
- 「動画」は、「映像」と「音声」から構成される「コンテナ」で管理されます。WEBサイトで現在表示できる標準的なコンテナは、「MP4」であり、映像コーディックは、「H.264」で、音声コーディックは「AAC」であり、種々のタイプの入力動画を「MP4」に統一して出力することがベストです。
映像や音声のコーディック変換は、「FFmpeg」を利用します。表示時間、大きさ、フレーム数、コディック情報などは「ffmpeg-php」を利用します。フレーム画像抽出や、フレームの組合せのアニメーションは「phpvideotoolkit-v2」が良いです。 - 「静止画 image系」の編集加工の処理は、「トリミング」「リサイズ」「サムネール画像生成」「画像変換」「画像合成」などが一般的で、「image又はImageMagick」を利用する方が良いです。
- 「静止画 draw系」の編集加工の処理は、テキストとボックスなどの描画によるラベル画像やロゴ制作が一般的で、「GD」を利用します。
- 「動画」は、事前に「XMedia Recode」(参考資料の参照)などのアプリ・ソフトを利用して「トリミング」「フレーム編集」などを実行した方が格段にスピードアップできます。(PHPプログラミングでは、30秒の映像・音声変換は、5~10分位が目安)
- 「動画」の編集加工の処理は、「サムネール画像としてフレーム画像抽出」などが一般的で、「ffmpeg-php」「image」を利用します。
- サムネール画像などの小容量の画像は、データベースの「BLOB形式」で保存すると管理が容易となります。DBのBLOB形式のデータ表示する場合は、画像タイプ別に"header('Content-Type: image/jpeg');"のように、「header」関数でコンテンツ指定して、「image」関数の imagejpeg(), imagepng(), imagegif()関数で出力するようにします。
画像をBLOB形式でDB保存するDB設計
- 画像をBLOB形式でDB保存するため、ER図とDDL作成の内容説明
上記のDBテーブル上で画像を保存するカラムタイプを1.6MBまで可能な「MEDIUMBLOB」指定して、静止画のサムネール画像や動画フレーム画像の情報カラムに画像のサイズ、拡張子、ファイル容量を保存してPHPプログラミングで画像の表示コントロールをします。
PHPの画像プログラミング
- 静止画のimage系のプログラミングは、
- ImageMagickによるGravityとOffsetの関係の説明
北西(NW)、北(N)、北東(NE)、東(E)、中央(C)、西(W)、南西(SW)、南(S)、南東(SE)の9種類のGravity(重心) からのOffset(x軸、y軸)を指定して、座標(0,0)からの開始位置を求めるものです。「画像トリミング処理」と「画像合成処理」のユーザー関数で作成して利用しています。
PHPの画像プログラミング(続き)
- 静止画のdraw系のプログラミングは、
PHPの動画プログラミング
- 動画のコンテナ変換のプログラミングは、
「FFmpeg」のPHPのコマンド実行「exec()」又は、「ffmeg.class.php」を利用します。コマンドの利用方法は、ウィキペディア・サイトのFFmpegで解説されていますので参照下さい。
「FFmpeg」は、音声のWAV→MP3変換、動画のAVC→MP4変換やm2ts→MP4変換、WMV→MP4変換、FLV→MP4変換などが簡単にでき、Goolge Chrome、Facebook、Youtube、ニコニコ動画、Twitterなどのオーディオビデオを扱う様々なソフトで利用されています。
- 動画の情報とフレーム画像の取得のプログラミングは、
PHPのextesionに追加した「ffmpeg-php」クラスを利用。video又はaudioファイルを開いてオブジェクトを作成する「ffmpeg_movie ()」とGDImageからフレームオブジェクトを作成する「ffmpeg_frame ()」です。(参考資料の「ffmpeg-php( extension )の仕様一覧の表示」を参照) - 画像DB保存(BLOB)と画像表示のプログラミングは、
静止画のサムネール画像や動画フレーム画像をDB保存して画像管理を容易にします。