phpでビデオ時間の総長を得る別の方法


動画の長さを得るには、ウェブ上で一般的にflvビデオファイルの長さを得る方法がありますが、この方法はflvビデオにしか対応していません。他のフォーマットの動画の取得値は非常に悪いです。以下では、ffmpegを利用して値Durationを返す方法を紹介します。多くのフォーマットのビデオに対応していますので、これは特定の汎用性があります。ffmpegは、ビデオ時間の長さをDurationするlinuxコマンド:ffmpeg-i test.fliv 2>&1 grep'Duration'|cut-d'-f 4|sed/を取得し、/Durationを取得することができます。下の図を見るとwps_clip_image-9458
コマンド解析:
grepコマンド:検索ファイルの条件に合致する文字列をマッチングします。ここでDurationフィールドを検索します。
cut:スペースを分割子として、4番目の要素を照会します。cutはとても良いカットコマンドです。
以下にいくつかのcutの例を添付します。
ヽoo。ツ。ツ。flav。ツ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
以下の情報を入力します。
wps_clip_image-19473
①creationdateを取得する:ファイル作成時間
ffmpeg-i test.fliv 2>&1 grep'creational'|cut-d'-f  5-
説明:Cutはテキストの切り取り命令です。スペースを区切り記号として、5番目以降のフィールドを切り取ります。
wps_clip_image-19643
切り取りたい場合:5番目の要素と8番目の要素は、このように書くべきです。
ffmpeg-i test.fliv 2>&1 grep'creational'|cut-d'-f  5,8
②ビデオサイズを取得する
cutを使ってスペースを区切りとする10番目の要素を切り取るのもビデオサイズです。
ffmpeg-i test.flv 2>&1 grep'Video'cut-d'-f 10|sed s/
wps_clip_image-25127
sedコマンド:sed's/置換する文字列/新しい文字列/g'
例えば、sed s/,/:は空白文字で置換します。'番号の下にはビデオのサムネイルとビデオの総長さを得るためのコードがあります。
 
<?php
/*
*
* ffmpeg
* @author PHP
* @date 2011-09-14
* @copyright PHP
*/
//
function getTime($file){
$vtime = exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//
$ctime = date("Y-m-d H:i:s",filectime($file));//
//$duration = explode(":",$time);
// $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//
return array('vtime'=>$vtime,
'ctime'=>$ctime
);
}
//
function getVideoCover($file,$time) {
if(empty($time))$time = '1';//
$strlen = strlen($file);
$videoCover = substr($file,0,$strlen-4);
$videoCoverName = $videoCover.'.jpg';//
exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$time." -t 0.001 -s 320x240 ".$videoCoverName."",$out,$status);
if($status == 0)return $videoCoverName;
elseif ($status == 1)return FALSE;
}
//
$duration = getTime('/usr/local/apache/htdocs/test.flv');
echo $duration['vtime'].'<br/>';//
echo $duration['ctime'].'<br/>';//
$videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv', 6);
echo $videoCoverName;//
?>
テストの効果:
wps_clip_image-21485
動画の長さは55秒43です。
ビデオの作成時間2011-9-13
動画のサムネイル:test.jpg
-----------------テストは完全okです。
補足:ビデオファイルのサイズを取得したいなら、使用できます。
filesize()
filesize()関数がファイルサイズを取得するデフォルトの単位は、ファイルサイズのバイト数を返します。そうでないとFALSEに戻ります。