ffmpeg - выбор скриншота из видео
1.
Дмитрий (04.05.2011 / 05:07)
Такая ситуация. При загрузке видео нужно автоматически выбирать из ролика кадр для скриншота.
Выбираю так:
shell_exec("ffmpeg -i '" . $filename . "' -f image2 -ss 00:00:03.000 -vframes 1 -y '" . $prevfile . "'");
где $filename - только что загруженный видеоролик
$prevfile - полный путь к создаваемому скриншоту
00:00:03.000 - третья секунда ролика
Все супер. НО - не выбирается скриншот из видео-формата ".mp4" (из .flv .avi и .3gp картинка выбирается отлично, в хорошем качестве).
Посоветуйте, плиз, как выбрать скриншот из .mp4
Немного добавлю - при загрузке ролика я конвертирую форматы, отличные от .flv и .mp4 - в .flv
Конвертирую так:
shell_exec("ffmpeg -i '" . $filename . "' -ar 22050 -ab 64k -f flv -b 700k -s 520x360 -y '" . $newfilename . "'");
где $filename - только что загруженный видеоролик
$newfilename - полный путь к создаваемому ролику .flv
Хотел конвертировать и .mp4 в .flv но беда в том, что и конвертировань не получается.
Для этого формата нужен какой-то костыль?
2.
Дмитрий (04.05.2011 / 16:04)
очень актуально
3.
Дмитрий (05.05.2011 / 06:10)
чо, никто не съел собаку на этом?
4.
Wwwyd (05.05.2011 / 07:19)
пересмотри свою сборку ffmpeg'а, скорей всего у тебя в сборке нет кодеков обработки mpeg4
5.
Александр (31.10.2018 / 06:49)
Приветствую всех, При загрузке файла на сервер выскакивает такая ошибка
Fatal error: Class 'ffmpeg_movie' not found in /var/www/u45265/data/www/newap.cf/panel/upload.php on line 131
А вот собственно эти строки 130 и 131:
/* Создаем объект ffmpeg */
$video = new ffmpeg_movie(ROOT.'/'.$url_file);
На сервере я так предполагаю поддержки ffmpeg нет,. В скрипте в самих кодах это ffmpeg можно убрать как-нибудь???
6.
Кевин Митник (31.10.2018 / 14:08)
сломаешь себе скрипт, так как он использует ffmpeg
7.
Александр (31.10.2018 / 14:15)
Кевин Митник, так как его заставить считать не критической ошибкой отсутствие ffmpeg??
8.
Вантуз-мен (31.10.2018 / 15:34)
Александр, оберни вызов в try catch и catch оставь пустым
http://php.net/manual/ru/language.exceptions.php
9.
Александр (31.10.2018 / 18:02)
Кусок кода
/* Создаем папку */
if(!mkdir(ROOT.'/'.$dir, 0777))
{
message('Произошла ошибка при создании папки '.$dir.' !');
}
chmod(ROOT.'/'.$dir, 0777);
/* Копируем файл */
if(!copy($_FILES['file']['tmp_name'], ROOT.'/'.$url_file))
{
unlink(ROOT.'/'.$dir);
message('Ошибка при копировании файла!');
}
/* Создаем объект ffmpeg */
$video = new ffmpeg_movie(ROOT.'/'.$url_file);
/* Длительность видео в секундах */
$duration = round($video->getDuration());
/* Размер файла в байтах */
$size = $_FILES['file']['size'];
/* Размеры */
$width = $video->getFrameWidth();
$height = $video->getFrameHeight();
$screen_size = $width.'x'.$height;
/* Пути к скриншотам */
$scr_mini = $dir.'/screen_mini.jpg';
$scr = $dir.'/screen.jpg';
/* Создаем скриншот */
$frame_count = $video->getFrameCount();
$frame = intval($frame_count / 2);
$select = $video->getFrame($frame);
if($select)
{
$screen = $select->toGDImage();
imagejpeg($screen, ROOT.'/'.$scr, 100);
imagedestroy($screen);
imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr_mini, 200, 200, 100); }
else
{
$frame = intval($frame_count / 3);
$select = $video->getFrame($frame);
if(!$select)
{
unset($video);
remove_dir(ROOT.'/'.$dir);
message('Невозможно создать скриншот для этого видео! Загрузите другое видео!');
}
Помогите исключить этот ffmpeg, чот я там Сань по ссылке ничего не догнал, там ещё в зависимости от версии php , у меня 5.2 т.к если выше ставить то скрипт ругатся начинает при подключении к базе.
10.
Вантуз-мен (31.10.2018 / 19:13)
/* Создаем папку */
if(!mkdir(ROOT.'/'.$dir, 0777))
{
message('Произошла ошибка при создании папки '.$dir.' !');
}
chmod(ROOT.'/'.$dir, 0777);
/* Копируем файл */
if(!copy($_FILES['file']['tmp_name'], ROOT.'/'.$url_file))
{
unlink(ROOT.'/'.$dir);
message('Ошибка при копировании файла!');
}
11.
Александр (31.10.2018 / 19:42)
Вантуз-мен, чего это?
12.
Вантуз-мен (31.10.2018 / 20:35)
Я исключил ffmpeg, как ты просил
13.
Александр (31.10.2018 / 23:02)
Так у меня ошибка в строчке которая красным выделена)
/* Создаем объект ffmpeg */
$video = new ffmpeg_movie(ROOT.'/'.$url_file);
14.
Александр (01.11.2018 / 00:12)
[code][/code]
15.
Вантуз-мен (01.11.2018 / 01:06)
Александр, посмотри внимательно в своем коде, там все что ниже работает с этой переменной $video
16.
Александр (01.11.2018 / 02:41)
Вантуз-мен, ну тогда получается что эта канитель из за
$video
А с ней что делать тогда?
17.
JustZero (01.11.2018 / 12:38)
Александр, либо убирай полностью все что связано с ffmpeg, либо ставь php-ffmpeg модуль.
18.
Александр (01.11.2018 / 12:50)
JustZero, скорее всего надо хостинг с ffmpeg искать, так как я пробовал удалять всё что связано с ffmpeg и в итоге ошибка подключения к серверу. Скрипт по ходу заточен под него(((
19.
ramzes (05.11.2018 / 10:17)
<?php
print_r(get_declared_classes());
?>
или
<?php
print_r(class_exists('ffmpeg_movie'));
?>
начинать надо с главного
URL:
https://visavi.net/topics/21231