Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ffmpeg() - вывести скриншот видеоролика
 
 автор: Z3RO   (08.01.2011 в 20:47)   письмо автору
 
 

Вот такая трабла: есть у меня код для создания скриншота для видео, но оно работает не так, как нужно. Мне надо, чтобы созданый скриншот выводило в нужном месте на странице, а оно вместо страници показывает только скриншот. Вот код
$file= $adrfile['adres'] . '/' . $adrfile['name'];
$mov = new ffmpeg_movie($file);
$frame = 100;
$w = $mov->GetFrameWidth();
$h = $mov->GetFrameHeight();
$ff_frame = $mov->getFrame($frame);
if ($ff_frame)
{
$gd_image = $ff_frame->toGDImage();
if ($gd_image)
{
header('Content-type: image/gif');
imagegif($gd_image);
}
else
{
die('невозможно преобразовать в GD');
}
}
else
{
die('невозможно извлечь кадр');
}

  Ответить  
 
 автор: cheops   (08.01.2011 в 20:59)   письмо автору
 
   для: Z3RO   (08.01.2011 в 20:47)
 

Поместите этот код в отдельный скрипт, скажем image.php, а для вывода картинки подставляйте его в тэг <img>
<img src='image.php' alt='скрин-шот ролика' />

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 21:01)   письмо автору
 
   для: cheops   (08.01.2011 в 20:59)
 

А вот масив $adrfile находится на странице вывода: это ничего страшного?

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 21:09)   письмо автору
 
   для: cheops   (08.01.2011 в 20:59)
 

Зделал так, как вы говорили: теперь всё нормально, но изображение непоказывает(так, когда его не существует)

  Ответить  
 
 автор: cheops   (08.01.2011 в 21:20)   письмо автору
 
   для: Z3RO   (08.01.2011 в 21:09)
 

1) А путь к скрипту, извлекающему скрин-шот указан верно, относительно вызывающего скрипта?
2) Если в адресной строке набрать путь к скрипту, извелкающему скрин-шот, что вместо картинки выводится?

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 21:32)   письмо автору
 
   для: cheops   (08.01.2011 в 21:20)
 

1) Путь указан верно
2) Выводит это: Warning: file_exists(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/home/tsax360/data:.) in /home/tsax360/data/www/shapy.us/download/gpscreen.php on line 4 невозможно найти файл
Ну я так понял, что файл, создающий скриншот должен инклудится в скрипт посредствам <img src... и исполнятся.
Эта ошибка выводится из-за того, что неверно указан адрес, но при выводе адреса он показывается нормально(для тестового файла адрес выводит такой: ../download/files/Video/3gp/100500/Epizod_01.3gp)

  Ответить  
 
 автор: cheops   (08.01.2011 в 21:50)   письмо автору
 
   для: Z3RO   (08.01.2011 в 21:32)
 

Функции file_exists() какой путь скармливаете? Дело в том, что она пытается найти файл за пределами виртуального хоста, где PHP уже запрещено работать с файлами (директивой open_basedir).

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 21:54)   письмо автору
 
   для: cheops   (08.01.2011 в 21:50)
 

Убрал эту функцию вообще(всё-равно она мне не была нужна), теперь страница, которая делает скриншот выводит это:
Warning: Can't open movie file / in /home/tsax360/data/www/shapy.us/download/gpscreen.php on line 4 Fatal error: Call to a member function GetFrameWidth() on a non-object in /home/tsax360/data/www/shapy.us/download/gpscreen.php on line 8

  Ответить  
 
 автор: cheops   (08.01.2011 в 21:58)   письмо автору
 
   для: Z3RO   (08.01.2011 в 21:54)
 

А путь в $file корректно задан относительно файла? PHP сообщает, что $mov вовсе никакой не объект, так бывает, если путь к файлу указан не верно и объект не был корректно инициализирован.

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 22:08)   письмо автору
 
   для: cheops   (08.01.2011 в 21:58)
 

Да, верно. Файл для теста я взял: /download/files/Video/3gp/100500/Epizod_01.3gp, скрипту передается адрес ../download/files/Video/3gp/100500/Epizod_01.3gp, сам скрипт находится по адресу /download/gpscreen.php
И еще переменной $file в файле, создающем скриншот нет, но она есть в файле, который выводит скриншот.

  Ответить  
 
 автор: cheops   (08.01.2011 в 22:17)   письмо автору
 
   для: Z3RO   (08.01.2011 в 22:08)
 

Хм... странно, ведь у вам уже удавалось выводить скрин-шот? Может вернуться к исходному варианту и начать отладку от него?

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 22:22)   письмо автору
3.8 Кб
 
   для: cheops   (08.01.2011 в 22:17)
 

Нет, не удавалось. Я с ффмпег работаю впервые. Я могу скинуть вам файл, который выводит скриншот и файл, который его делает. Вот архив(в файле view.php 65 строчка)

  Ответить  
 
 автор: cheops   (08.01.2011 в 23:44)   письмо автору
 
   для: Z3RO   (08.01.2011 в 22:22)
 

Хм... к сожалению, у меня нет виде-файлов подходящего формата. Хорошо бы если вы сообщили откуда можно скачать не очень тяжелый видео-ролик.

  Ответить  
 
 автор: cheops   (08.01.2011 в 22:19)   письмо автору
 
   для: Z3RO   (08.01.2011 в 22:08)
 

Во время отладки, положите видео в папку прямо со скриптами, чтобы не возиться с путями, когда все заработает - начинайте подключать видео из другой папки.

  Ответить  
 
 автор: Z3RO   (08.01.2011 в 22:25)   письмо автору
 
   для: cheops   (08.01.2011 в 22:19)
 

Такого сделать не могу, потомучто мой ЗЦ построен так, что скрипты находятся в папке /download, а все файлы в папке /download/files, а вывод файлов осуществляется через MySQL

  Ответить  
 
 автор: Z3RO   (09.01.2011 в 10:57)   письмо автору
 
   для: cheops   (08.01.2011 в 22:19)
 

Всё, проблему решил сам. Она была в том, что переменная $file не передавалась из одного документа в другой. Всё, что я зделал--это передачу адреса через GET параметр.

  Ответить  
 
 автор: lElectroHardl   (09.01.2011 в 16:30)   письмо автору
 
   для: Z3RO   (09.01.2011 в 10:57)
 

GET это не параметр, а массив.

  Ответить  
 
 автор: Z3RO   (09.01.2011 в 16:36)   письмо автору
 
   для: lElectroHardl   (09.01.2011 в 16:30)
 

И так и так правильно :нуну:

  Ответить  
 
 автор: cheops   (09.01.2011 в 16:51)   письмо автору
 
   для: lElectroHardl   (09.01.2011 в 16:30)
 

>GET это не параметр, а массив.
Нет, ну почему, GET-параметры тоже существуют... параметры в строке запроса называются GET-параметрами, PHP преобразует их в массив $_GET, другие языки этого не делают... поэтому там такого понятия как такового нет, если его программист для своего удобства специально не вводит.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования