Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: animated gif from movie
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » animated gif from movie

Страниц (1): [1]
 

1. Snegfighter - 12 Октября, 2008 - 10:39:36 - перейти к сообщению
суть - пользователь загружает ролик на сайт. ролик декодируется в флв с опр разрешением (с этим разобрался, проблем нет)
А вот еще хочу сделать так, чтобы из этого ролика делался анимационный джиф (*.gif) из кифрэймов (keyframe).

что то вроде такого, только нужно чтобы эта картинка сохранялась в отдельной папке.
при этом, кажды фрэйм желательно наложить на фон 140х110


Цитата:

$gif = new ffmpeg_animated_gif(1, 120, 90, 3, 0);
while ($frame = getNextKeyFrame($filename))
{
$gif->addFrame($frame);
}


Библиотека включена и гд2 и ффмпег. Огорчение
2. valenok - 12 Октября, 2008 - 12:06:51 - перейти к сообщению
$gif->addFrame($frame); правильно отрабатывает ?
В результате получается массив фреймов ?
3. Snegfighter - 13 Октября, 2008 - 01:30:02 - перейти к сообщению
о кстати... раз массив, то нада идентификатор ставить... 0_о
хотя по идее без идентификатора он по умолчанию будет $gif[0], $gif[1]....

не знаю, как проверить есть ли массив? я просто с этой функцией не разобрался.. с гд2 и пхпффмпег.
по идее я вставил проверку на
грубо говоря так
CODE (text):
скопировать код в буфер обмена
  1.  
  2. if (!isset($gif))
  3. echo "ашыпко!!";
  4. else
  5. echo "Ашипки нету )";
  6.  
4. valenok - 13 Октября, 2008 - 01:46:21 - перейти к сообщению
ну вы документацию откройте, посмотрите что делает функция addframe
проведите отладку
5. Snegfighter - 13 Октября, 2008 - 07:50:23 - перейти к сообщению
$frame->addFrame(ffmpeg_frame frame_to_add) //Add a frame to the end of the animated gif.
frame_to_add - The ffmpeg_frame object to add to the end of the animated gif.

То есть функция addframe добавляет кадр в конец анимированного gif
Только не просто кадр а ffmpeg_frame-объект. который он берет из
$frame = getNextKeyFrame($filename)

Документация:

$movie->getNextKeyFrame() //Returns the next key frame from the movie as an ffmpeg_frame object. Returns false if the frame was not found.


так, посмотрел еще
$movie = new ffmpeg_movie(String path_to_media, boolean persistent) - видимо вот тут подставляется параметр $filename, а уже в getNextKeyFrame идет без параметра...

Вот так не работает почему то... Недовольство, огорчение $filename определяется раньше. грубо говоря это video/1.avi

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $frame = new ffmpeg_movie($filename);
  3.  
  4. $gif = new ffmpeg_animated_gif(1, 120, 90, 3, 0);
  5. while ($frame -> getNextKeyFrame())
  6. {
  7. $gif->addFrame($frame);
  8. }
  9. imagegif (1, $gif);
  10.  
  11. if (!isset($gif))
  12. echo "ашыпко!!";
  13. else
  14. echo "Ашипки нету )";
  15.  
  16.  
  17.  


в смысле не пишет ни есть ли ошибка ни нету ли...

Включил отображение всех ошибок пхп

Warning: Can't open movie file video\origin\The-Rasmus-In-The-Shadows.avi in {path}\tmp\upload1.php on line 25

Fatal error: Call to a member function getNextKeyFrame() on a non-object in {path}\tmp\upload1.php on line 28
6. valenok - 13 Октября, 2008 - 14:05:03 - перейти к сообщению
Fatal error: Call to a member function getNextKeyFrame() on a non-object
переведите
7. Snegfighter - 13 Октября, 2008 - 16:44:25 - перейти к сообщению
позвонить члену функции ВзятьСледущийКлючевойФрейм() на не-объект Улыбка

Ну я понимаю, что функция библиотеки php_ffmpeg вызывает поток который объектом этой функции не является. Т.е., то что передается этой функции в качестве параметра с которым она предназначена работать не является требуемым типом. как я понял. Но почему вопрос, ведь я ей ее же функцией другой только даю этот тип. Недовольство, огорчение

погуглил, посмотрел... обычно ошибка возникает если не инициализировано то что вызывается... Но у меня функция то вызывать должно все что надо. И почему открыть не может мувик, если функция к нему оращается после того как скопирует ролик.
8. valenok - 13 Октября, 2008 - 17:42:58 - перейти к сообщению
не не, вы на код смотрите и ошибку читайте.
Переводится она так:

Вызов функции getNextKeyFrame() у не-объекта

Смотрим у чего мы вызываем эту функцию. По коду похоже что
$frame -> getNextKeyFrame() - функцию мы вызываем у объекта $frame.
А php говорит что это не объект. Что делать ?

Подсказка: обычно ошибка возникает если не инициализировано то что вызывается

 

Powered by ExBB FM 1.0 RC1