QuickTime形式(moov)の映像から映像長を返却する方法を紹介します.
【参考URL】
MQVで学ぶQuickTime Atomフォーマット(その1)
MQVで学ぶQuickTime Atomフォーマット(その4)
実は,apple社が提供しているフリーソフト「dumpster」 を使用して、3gpファイルのAtom構造を表示・修正できます.Atom構造の勉強にもなります.
>>DL
一番簡単に実装する方法は,既存のgetID3ライブラリ(GPL)を使うのがよいのかも.
>>DL
下記のスクリプトは,3gpファイルから,Movie header atom構造における,映像の時間長の情報が格納されている,mvhd の部分を抽出し,直接バイナリデータとして時間長を取得しています.最終的には,バイナリデータから10進数情報に変改しています.
<?php
$filename = "ファイル名";
$handle = fopen($filename, "rb");
// ファイル読み込み
$contents = fread($handle, filesize($filename));
// moov/mvhd (Movie header atom)の文字列を検索
$findkey = 'mvhd';
$pos1 = stripos($contents, $findkey);
$pos2 = $pos1+strlen($findkey)+12;
//バイナリ情報を16進数文字列に変化し10進数に変換(もっとスマートな方法ないかな?)
$timeScale_bin = substr($contents, $pos2, 4);
$timeScale = hexdec(bin2hex($timeScale_bin));
$duration_bin = substr($contents,($pos2+4),4);
$duration = hexdec(bin2hex($duration_bin));
// タイムスケールがファイル毎に違うので,正規化した時間長を計算
$normalizedDuration = $duration/$timeScale;
fclose($handle);
?>