Форум → Программирование → PHP для идиотов → Конвертация видео средствами php ffmpeg (висы) 2
Конвертация видео средствами php ffmpeg (висы) 2
Страницы: ← Следующая страница →
-
Добрый день!
Подскажите, сейчас столкнулся с аналогичной проблемой, когда юзер загружает видео, оно должно перекодироваться , макс размер видео 6мб, при конвертации висит сервер. Сейчас проэкт находится на стадии разработки, поэтому на локале.
Если делать все то же самое в консоле, то выполняется за пару секунд.
Как решить данную проблему? -
Окт. 12, 2010, 3:50 п.п., спустя 2 минуты 59 секунд
SHTURMAN, а как вы конвертируете при "когда юзер загружает видео, оно должно перекодироваться "? Код в студиюhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Окт. 12, 2010, 3:53 п.п., спустя 2 минуты 47 секунд
function run_external( $cmd, &$code )
{
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$pipes = array();
$process = proc_open($cmd, $descriptorspec, $pipes);
$output = "";
if (!is_resource($process)) return false;
fclose($pipes[0]);
stream_set_blocking($pipes[1],false);
stream_set_blocking($pipes[2],false);
$todo= array($pipes[1],$pipes[2]);
while(true)
{
$read = array();
if(!feof($pipes[1])) $read[] = $pipes[1];
if(!feof($pipes[2])) $read[] = $pipes[2];
if (!$read) break;
$ready = stream_select($read, $write = NULL, $ex = NULL, 2);
if ($ready === false) {
break;
}
foreach ($read as $r)
{
$s = fread($r,1024);
$output .= $s;
}
}
fclose($pipes[1]);
fclose($pipes[2]);
$code = proc_close($process);
return $output;
}
$dir_ffmpeg = $HTTP_SERVER_VARS['DOCUMENT_ROOT'].'/ffmpeg/bin/';
$err .= run_external($dir_ffmpeg.'ffmpeg -i '.$_FILES['userfile']['tmp_name'].' -y -acodec aac -s 176x144 -ar 8000 -b 57344 -vcodec h263 -ab 7.4k -ac 1 '.$upload_video_file, $code);
$upload_video_file генерится, думаю не суть важно какая там ссылка.
это код если вкратце -
Окт. 13, 2010, 3:28 д.п., спустя 11 часов 35 минут 30 секунд
простите, а зачем run_external() нужен?
почему не использовать [man]exec[/man]() например?Спустя 75 сек.ну и еще код надо форматировать прежде чем заливать сюда, дальше первх 10-ти строк я не читал даже, это просто кашаhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Окт. 13, 2010, 11:21 д.п., спустя 7 часов 52 минуты 27 секунд
прошу прощения, т.к. не часто пользуюсь форумами :-)
вчера еще делал встроеными функциями php
так вот какая штука выходит
в таком вот случае:
$err .= exec($dir_ffmpeg.'ffmpeg -formats', $new);
var_dump($new);
возвращает массив значений, а вот когда пишу:
$err .= exec($dir_ffmpeg.'ffmpeg -i '.$_FILES['userfile']['tmp_name'].' -y -acodec aac -s 176x144 -ar 8000 -b 57344 -vcodec h263 -ab 7.4k -ac 1 '.$upload_video_file, $new);
var_dump($new);
то возвращается пустая строка и видео даже не кодируется… -
Окт. 13, 2010, 1:14 п.п., спустя 1 час 53 минуты 12 секунд
$cmd = $dir_ffmpeg . 'ffmpeg -i ' . escapeshellcmd($_FILES['userfile']['tmp_name']) . ' -y -acodec aac -s 176x144 -ar 8000 -b 57344 -vcodec h263 -ab 7.4k -ac 1 ' . escapeshellcmd($upload_video_file);
$res = exec($cmd, $out, $ret);
var_dump($cmd, $res, $out, $ret);
Что выводит?https://smappi.org/ - платформа по созданию API на все случаи жизни -
Окт. 13, 2010, 5:11 п.п., спустя 3 часа 56 минут 54 секунды
adw0rd, спасибо за помощь, я уже разобрался.
оказалось, что кодек aac какой-то ограниченный и там пришлось дописать еще, чтобы оно заработало :-)
А не подскажешь, каким образом можно сделать превью видео, чтобы оно было .gif? т.е. взять несколько кадров и слепить .gif?
т.к. не использую класса php-ffmpeg, думаю так вытащить количество кадров, высчитать какие кадры взять, сделать скриншоты во временную папку и затем слепить .gif.
или может есть более просто способ или более "правильный" ? -
Окт. 13, 2010, 6:36 п.п., спустя 1 час 24 минуты 40 секунд
если ты про анимированные превью
то делать гифы думаю не очень хорошая идея. общепринято нарезать несколько jpg и крутить их JS -
Окт. 13, 2010, 7:39 п.п., спустя 1 час 3 минуты 30 секунд
я делаю под wap. а мобилы не все понимают JS
а можешь прояснить почем не очень хорошая идея? -
Окт. 13, 2010, 8:48 п.п., спустя 1 час 9 минут
SHTURMAN, что за сайт в вапе?https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
Окт. 13, 2010, 9:53 п.п., спустя 34 минуты 11 секунд
думаю так вытащить количество кадров, высчитать какие кадры взять, сделать скриншоты во временную папку и затем слепить .gif.
Да есть классы готовые -
Окт. 14, 2010, 11:33 д.п., спустя 13 часов 39 минут 22 секунды
adw0rd, загрузка и просмотр картинок, видеороликов :-)
А на форуме есть что-то про watermark? а то уже столько перечитал в гугле, но что-то никак не поддается он мне :-(
arvitaly, ты о php_ffmpeg? тоже задумался о нем, т.к. наверно будет проще подключить еще библиотеку, чем делать так как я хотел :) -
Окт. 14, 2010, 12:02 п.п., спустя 29 минут 8 секунд
arvitaly, ты о php_ffmpeg? тоже задумался о нем, т.к. наверно будет проще подключить еще библиотеку, чем делать так как я хотел :)
нет не о php_ffmpeg, хотя и на нем я делал правда давно) -
Окт. 14, 2010, 12:25 п.п., спустя 23 минуты 7 секунд
arvitaly, назови тогда уже классы, пожалуйста, а то так могу очень долго угадывать :-)
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!