FLVの再生時間を取得してみる

なんか、2日分のお金をくれるので、動画アップロードサイトのプロトタイプを作ってみない?、とか言われる。
2日だと厳しいのでせめて3日と答えておく。
まあ、半分はお遊びなプロジェクトなわけですが(・∀・)


っで、休み時間を使って構成管理だとかプロジェクトの雛形あたりを用意。
この本も買ってきて、サーバにffmpegインスコしたり、とりあえず今日は環境面のチェックまで。

FFmpegで作る動画共有サイト

FFmpegで作る動画共有サイト

あと、使いそうな技術の調査もちょっとだけ。
その中から、FLVの再生時間を取得する方法について。

ネットで調べたところ、こんなカンジで良いのかな(・∀・)?

<?php
function getFLVDuration($filename)
{
    $duration = false;

    if ( file_exists( $filename ) )
    {
        $handle = fopen( $filename, 'r' );
        $length = filesize( $filename );
                
        if ( $length > 3 )
        {
            $magic = fread( $handle, 3 );
            if ( $magic == 'FLV' )
            {
                fseek( $handle, -3, SEEK_END );
                $taglen = hexdec( bin2hex( fread( $handle, 3 ) ) );
                if ( $length > $taglen )
                {
                    fseek( $handle, $length - $taglen, SEEK_SET );
                    $duration = hexdec( bin2hex( fread( $handle, 3 ) ) );
                }
            }
        }

        fclose( $handle );
    }
    
    return $duration;
}
?>

取得できる時間の単位はミリ秒。
テスト用のファイルをいくつか試してみたところ、ちゃんと再生時間らしきものが取れまスタヽ( ・∀・)ノ


で、基本的なことは分かったので、後はWebのソーシャルほげほげサービス的な部分と、FLVプレイヤーの作り込みっと。
ちなみに提案書にYouTubeのパクリとか書くの自重(´・ω・`)