ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルでビデオの全長を取得する別の方法

php_PHP チュートリアルでビデオの全長を取得する別の方法

WBOY
WBOYオリジナル
2016-07-21 15:24:55896ブラウズ

当時、動画の長さはインターネット上の一般的な方法で flv 動画ファイルの長さを取得していましたが、この方法は flv 動画に対してのみサポートされており、他の形式の動画では得られる値は非常に貧弱でした。
以下は導入です: ffmpeg を使用して返す 最初は、Duration メソッドを使用することを考えていましたが、うまくいきませんでした。ffmpeg は多くのビデオ形式をサポートしているため、このメソッドにはある程度の汎用性があります。
ffmpeg 動画の長さを取得する Linux コマンド:
ffmpeg -i test.flv 2>&1 | grep 'Duration' Cut -d ' ' -f 4 |
Duration を取得できます。 ; 以下の写真を参照してください
wps_clip_image-9458

コマンド分析:

grepコマンド: 検索ファイル内の条件を満たす文字列と一致し、ここでDurationフィールドを探します

cut: 4 番目の要素をクエリするにはスペースを区切り文字として使用します。cut は優れた切断コマンドです

いくつかのカット例を以下に添付します:

#ffmpeg -i test.flv

次の情報を入力してください:

wps_clip_image-19473

①作成日を取得: ファイル作成時刻

ffmpeg -i test.flv 2>&1 grep 'creationdate' カット -d ' ' -f 5-

説明: Cut はテキスト インターセプト コマンドです。区切り文字としてスペースを使用して、5 桁目以降のフィールドをインターセプトします。

wps_clip_image-19643

5番目の要素と8番目の要素をインターセプトしたい場合は、次のように書く必要があります:

ffmpeg -i test.flv 2>&1 | grep '作成日' | カット -d ' ' -f 5,8

②動画サイズを取得

cut を使用して、スペースを区切り文字として 10 番目の要素をインターセプトします。これはビデオ サイズでもあります

ffmpeg -i test.flv 2>&1 | grep 'ビデオ' sed s/,//

wps_clip_image-25127

sedコマンド: sed ‘s/置換される文字列/新しい文字列/g’

例: sed s/,//: の意味: 「,」記号を空白文字に置き換える
以下はビデオのサムネイルとビデオの全長を取得するコードです:

コードをコピーします コードは次のとおりです:

/*
* ビデオ ファイルのサムネイルとビデオの長さを取得します
*ffmpeg サポートが必要です
* @author PHP Huaibei
* @date 2011-09-14
* @copyright PHP Huaibei
*/
// 動画ファイルの合計時間と作成時間を取得します
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_秒 = $duration[0]*3600 + $duration[1]*60+round($duration[2]) ;//秒に変換
return array('vtime' =>$vtime,
'ctime'=>$ctime
);
//動画ファイルのサムネイルを取得
function getVideoCover($file, $time) {
if(empty($time))$ time = '1' //デフォルトでは、最初の 2 番目のフレームがインターセプトされます
$strlen = strlen($file); $file,0,$strlen-4);
$videoCoverName = $videoCover. '.jpg';//サムネイルの名前付け
exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$時間。" -t 0.001 -s 320x240 ".$videoCoverName."", $out,$status);
if($status == 0)return $videoCoverName;
elseif ($status == 1)return
}
//呼び出しメソッド
$duration = getTime('/usr/local /apache/htdocs/test.flv');
echo $duration['vtime'].'
';//Total長さ
echo $duration['ctime'].'
$videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv', 6); $videoCoverName;//サムネイル名を取得します
?>

テスト効果:

wps_clip_image-21485

動画の長さ: 55 秒 43

ビデオ作成時間: 2011-9-13

ビデオサムネイル: test.jpg

--------------------------------テストは全く問題ありません

追加: ビデオファイルのサイズを取得したい場合は、以下を使用できます:

ファイルサイズ()

filesize() 関数は、ファイル サイズを取得するために使用されます。デフォルトの単位は bytes です。成功した場合はファイル サイズのバイト数を返し、それ以外の場合は FALSE を返します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/324235.html技術記事当時、flv 動画ファイルの長さを取得するには、インターネット上の一般的な方法を使用して動画の長さを取得していましたが、この方法は flv 動画に対してのみサポートされており、他の形式の動画に対して得られる値は非常に貧弱でした。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。