3

サーバーにflvファイルをアップロードしています。その期間を「分:秒」の形式で表示したいと思います。誰かがこれで私を助けることができますか?

ありがとうございました

4

4 に答える 4

7

FFMPEGPHP拡張機能もあります。apt-get install php5-ffmpegそれから

$ movie = new ffmepg_movie( "path / to / movie.flv");
$ duration_in_seconds = $ movie-> getDuration();

これは以前私のために働いていました。この拡張子は、メタデータを取得したり、アップロードされたファイルがFLVであるかどうかをテストしたりするのに適しています。

于 2010-10-26T07:56:56.140 に答える
4

これがフレームを取得してビデオから画像を生成するための私のコードです...

// get the duration and a random place within that
$cmd = "ffmpeg -i " . $videoPath . " 2>&1";
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
   $total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
   $second = rand(1, ($total - 1));
}
exec($cmd);

// get the screenshot
exec("ffmpeg -i " . $videoPath . " -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg " . $imageOutput . " 2>&1");

$ second変数は、0から合計期間までの乱数です。2番目のexec()は、選択したフレームから画像ファイルを作成することです。

$ imageOutputは、生成された画像への絶対パスの場所です。例:/home/ariawan/image-generated.jpg

于 2010-10-27T09:46:13.177 に答える
3

getID3 PHP library依存関係のないプレーンな古いPHPで書かれたを使用します。

.flvそれはあなたに秒単位で映画の長さを与えるだけでなく、それをminute:secondsすでにフォーマットに変換します。v。1.7.9(の最新の安定バージョンgetid3)のコードサンプルを次に示します。

<?php

// getId3 library uses deprecated eregi_* functions 
// which generate errors under PHP 5.3 - so I excluded them
error_reporting(E_ALL ^ E_DEPRECATED);

// just for debugging/sample
header('Content-Type: text/plain');

// include the getid3 base class in order to use the lib
require_once('./lib/getid3.php');

// path to your .flv file
$filename = './sample.flv';

$getID3 = new getID3();
$fileInfo = $getID3->analyze($filename);

// echoes something like 127.8743
print 'Playtime in seconds: ' . $fileInfo['playtime_seconds']; 

print chr(10);

// echoes something like: 2:07
print 'Playtime in minute:seconds format: ' . $fileInfo['playtime_string'];
于 2010-10-26T15:21:57.963 に答える
2

私はビデオの長さを取得するためにphpとffmpegを使用しています。

    $cmd = "ffmpeg -i " . $videoPath . " 2>&1";
    if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
        $total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
    }
    exec($cmd);

print_r()表示する$time変数。ffmpegがマシンにインストールされていることを確認してください。これが役立つことを願っています。

于 2010-10-26T06:56:49.817 に答える