- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Создаю скриншоты и когда практически обработано все видео выдает ошибку:
Fatal error: Call to a member function toGDImage() on a non-object in
Код который создает скриншоты:
$movie = new ffmpeg_movie("video.avi");$frames_count = $movie->getFrameCount();
echo "Count - ".$frames_count."<br>";
$frames_rate = $movie->getFrameRate();
echo "Rate - ".$frames_rate."<br>";
$seconds = ceil($frames_count/$frames_rate);
echo "Seconds - ".$seconds."<br>";
for($k=1; $k<=$seconds-17; $k=$k+15)
{
$j++;
$frame = ceil($k*$frames_rate);
echo $frame."<br>";
$image = $movie->getFrame($frame);
$show_img = $image->toGDImage();
imagejpeg($show_img, "photos/".$j.".jpg");
}
Вот результат работы скрипта:
Count - 21216 - к-во кадров
Rate - 20 - кадров в секунду
Seconds - 1061 - секунд в видео
20 - номер кадра из которого делаем скриншот
320
620
.........
8120
8420
Fatal error: Call to a member function toGDImage() on a non-object in
Почему возникает такая ошибка. Останавливается на 8420 кадре, а ведь кадров всего 21216...
И такая ошибка возникает практически для каждого видео
Почему возникает такая ошибка. Останавливается на 8420 кадре, а ведь кадров всего 21216..
Да там тысяча и одна причина. Форматы видео все разные. ffmpeg постоянно меняется. дошло до того, что у них теперь две крупные ветки - libav и ffmpeg.
Я бы работал с внешней программой. Ее обновлять удобнее и php она не порушит.
Все подобные ошибки означают, что создание объекта в коде чуть выше не удалось.
то есть, вызов $image = $movie->getFrame($frame); не вернул правильный объект, потому что произошла ошибка. А какая именно, вы узнаете после того как сделаете проверку и вывод ошибок на этом этапе.
Подскажите как выполнить таку проверку, а то я не силен в ооп:
Согласно документации возвращается либо объект либо false
вот так должно быть нормально
if (!$image) {
Но вот почему frame not found может быть уже не понятно из документации.
Предположу, что это расширение не дает возможности отмотать назад и считать всю информацию необходимую для реконструкции кадра, если он базируется на других предыдущих. Можно попробовать доставать штук 30-60 следующих и какой-нибудь из них окажется опорным, будет содержать всю информацию и объект создастся.
У внешней программы ffmpeg такой проблемы нет. Она просто читает поток подряд и создает картинки.