У меня есть файл FLV, загруженный на сервер. Я хотел бы отображать его продолжительность в следующем формате «минуты: секунды». Может ли кто-нибудь помочь мне с этим?
Спасибо
У меня есть файл FLV, загруженный на сервер. Я хотел бы отображать его продолжительность в следующем формате «минуты: секунды». Может ли кто-нибудь помочь мне с этим?
Спасибо
Вот мой код для захвата кадра и создания изображения из видео...
// 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
Существует также расширение FFMPEG для PHP, т.е. apt-get install php5-ffmpeg
тогда
$movie = new ffmepg_movie("path/to/movie.flv"); $duration_in_seconds = $movie->getDuration();
Это работало для меня раньше. Расширение хорошо подходит для извлечения метаданных и проверки того, является ли загруженный файл FLV и т. д.
Я бы использовал getID3 PHP library
, написанный на простом старом PHP без каких-либо зависимостей.
Он не только дает вам продолжительность фильма .flv
в секундах, но уже преобразует его в формат minute:seconds
. Вот пример кода для версии 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'];
я использую 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. Надеюсь, это поможет.