У меня есть файл flv, загруженный на сервер. Я хотел бы показать его продолжительность в следующем формате «минуты: секунды». Может ли кто-нибудь помочь мне в этом?Получение продолжительности FLV с php
Спасибо
У меня есть файл flv, загруженный на сервер. Я хотел бы показать его продолжительность в следующем формате «минуты: секунды». Может ли кто-нибудь помочь мне в этом?Получение продолжительности FLV с php
Спасибо
Вот мой код, чтобы захватить кадр и сформировать изображение из видео ...
// 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");
$ второй переменной случайное число от 0 до общей продолжительности. , а второй exec() - создать файл изображения из выбранного кадра.
$ imageOutput - это абсолютное местоположение пути к сгенерированному изображению. eg: /home/ariawan/image-generated.jpg
Я использую 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() переменная времени $ для просмотра. убедитесь, что ffmpeg установлен на вашей машине. надеюсь, что это поможет.
спасибо, что я попробую. Я знаю, что ffmpeg установлен. – Ciprian
Я не уверен, как это сделать. Я создал переменную $ videoPath = 'skittles.flv'; и я назвал переменную $ time с print_r (time); Результатом будет Array() – Ciprian
try ffmpeg -i /path/path/videofile.flv. он работает? – ariawan
Существует также расширение PHP FFMPEG, т.е. apt-get install php5-ffmpeg
затем
$movie = new ffmepg_movie("path/to/movie.flv"); $duration_in_seconds = $movie->getDuration();
Это сработало для меня ранее. Расширение полезно для извлечения метаданных и тестирования, если загруженный файл является FLV и т. Д.
затем разделите на 60, чтобы получить минуты и по модулю 60, чтобы получить оставшиеся секунды –
cool ... я также попробую эту опцию. Большое спасибо! – Ciprian
Я использую 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'];
спасибо человеку. Я ценю вашу помощь. Но в итоге я использовал второе предложение. Любая идея о том, как захватить эскиз? – Ciprian
+1 для getid3, потому что он не имеет зависимостей –
@ciprian, как захватить миниатюру, должен быть отдельным вопросом. –
Спасибо за вашу помощь. Я также хотел бы создать эскиз из FLV-файла. В настоящее время я пытаюсь выполнить это, используя этот код. Но я, кажется, что-то делаю неправильно.
$cmd = "ffmpeg -i /home/web1/wpmu.site.com/htdocs/wp-content/blogs.dir/7/files/2010/10/4973_3.flv -f image2 -vframes 1 -ss 00:00:01 -y -s 100x100 /home/web1/wpmu.site.com/htdocs/wp-content/blogs.dir/7/files/2010/10/4973_3.png";
exec($cmd, $output, $return);
Я включил его на страницу test.php. Он должен работать, просто обновляя страницу правильно? Я добавил путь к файлу png. Что может быть не так с этим?
Благодаря
Я уже добавляю еще один ответ на ваш вопрос с эскизом. Я также добавил код, но параметр, который я использовал для ffmpeg, - jpeg. – ariawan
ariawan, большое вам спасибо за помощь. Я могу получить изображение в папке, но он пуст 0 байтов. это то, что у меня есть: – Ciprian
Я не уверен, что произошло, но сервер, над которым я работал, был перезапущен, и теперь все работает отлично. Большое спасибо! – Ciprian
хорошо .. большой ... – ariawan