Получение продолжительности FLV с php - PullRequest
3 голосов
/ 26 октября 2010

У меня есть файл FLV, загруженный на сервер.Я хотел бы отобразить его продолжительность в следующем формате «минуты: секунды».Кто-нибудь может мне помочь с этим?

Спасибо

Ответы [ 4 ]

7 голосов
/ 26 октября 2010

Существует также расширение FFMPEG PHP, т.е. apt-get install php5-ffmpeg затем

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

Это работало для меня ранее. Расширение хорошо подходит для извлечения метаданных и проверки, является ли загруженный файл FLV и т. Д.

4 голосов
/ 27 октября 2010

Вот мой код для захвата кадра и создания изображения из видео ...

// 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 до общей продолжительности. а второй exec () - создать файл изображения из выбранного кадра.

$ imageOutput - это абсолютный путь к сгенерированному изображению. например: /home/ariawan/image-generated.jpg

3 голосов
/ 26 октября 2010

Я бы использовал 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'];
2 голосов
/ 26 октября 2010

Я использую 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 установлен на вашем компьютере .. надеюсь, это поможет.

...