1 - постом заливается файл
2 - переношу его мув_аплодед_файлс в свою директорию
3 - делаю скриншот
4 - выполняю command вот так (конвертирование файла):
exec('ffmpeg -i ' . $filename . ' -f mp4 -b 512k -vcodec libx264 -vpre faster -acodec libfaac -ar 44100 -ab 96k -threads 2 ' . $filetmp . ' && qt-faststart ' . $filetmp . ' ' . $filenew);
и после делаю
unlink($filename);
unlink($filetmp);
1) вопрос: что произойдет? exec не будет же дожидатся окончания операции shell ? если нет, тогда получается удалятся нижние 2 файла? которые используются в кодировании..
меня инетерсует, как дождатся полного окончания выполнения операции exec() (пока есть идея, сделать цикл и ждать пока вернется true, на сколько я помню это 2ой не обязательный аргумент exec() ?)
2) знаю что с помощью shell_exec() можно возвращать инфу с терминала..
для примера:
echo shell_exec('ffmpeg -i /home/zeromind/www/uploads/videos/6/eCiS0A5dNW.flv 2>&1');
возвращает всё ок, можно ли как то похожим методом возвращать прогресс конвертирования файла, который обновляется в терминале.. ?
в очень старой статье был приведен примерно следующее решение:
ffmpeg -y -i input.avi -vcodec xvid -acodec mp3 -ab 96 output.avi &> output.txt
т.е. записывает инфу в файл, потом её же получается читаем, и можно расчитать "примерное" время окончание операции.. есть ли идеи насчет этого ? )
Спустя 40 минут, 41 секунда (25.02.2012 - 19:34) killer8080 написал(а):
Цитата (zeromind @ 25.02.2012 - 17:53) |
1) вопрос: что произойдет? exec не будет же дожидатся окончания операции shell ? |
вообще то должна дождаться, если только вывод не был перенаправлен в файл
Цитата (zeromind @ 25.02.2012 - 17:53) |
если нет, тогда получается удалятся нижние 2 файла? которые используются в кодировании.. |
если файлы будут в процессе обработке, ffmpeg их залочит, и php не сможет их удалить
Цитата (zeromind @ 25.02.2012 - 17:53) |
возвращает всё ок, можно ли как то похожим методом возвращать прогресс конвертирования файла, который обновляется в терминале.. ? |
вывод вернуть можно, только вернется он когда отработает консольная команда, прогресс отслеживать не получится.
Спустя 6 минут, 55 секунд (25.02.2012 - 19:41) zeromind написал(а):
Цитата (killer8080 @ 25.02.2012 - 19:34) | ||||||
вообще то должна дождаться, если только вывод не был перенаправлен в файл
если файлы будут в процессе обработке, ffmpeg их залочит, и php не сможет их удалить
вывод вернуть можно, только вернется он когда отработает консольная команда, прогресс отслеживать не получится. |
протупил, сейчас проверил заново, exec() ждет окончания операции..
насчет прогресса: каким способом на ютубе том же реализован прогресс бар конвертирования файла? )
вот есть сервис (не реклама), там впринципе так же как и на ютубе (ajax'om обновляются процентики и заполняется бар)
Спустя 8 минут, 7 секунд (25.02.2012 - 19:49) killer8080 написал(а):
Цитата (zeromind @ 25.02.2012 - 18:41) |
насчет прогресса: каким способом на ютубе том же реализован прогресс бар конвертирования файла? ) |
Не знаю. Наверно вывод перенаправляется в файл, затем аяксом через интервалы делается запрос к скрипту который парсит отчет из файла, но это лишь предположение.
Спустя 2 минуты, 11 секунд (25.02.2012 - 19:51) zeromind написал(а):
когда конвертируется файл, в терминале одна и та же строка обновляется пару раз в секунду(кол-во кадров пройденных, битрейт, сколько времени файла пройдено), мб всё таки shell_exec сразу будет возвращать данные?
Спустя 3 минуты, 53 секунды (25.02.2012 - 19:55) killer8080 написал(а):
Цитата (zeromind @ 25.02.2012 - 18:51) |
мб всё таки shell_exec сразу будет возвращать данные? |
Не будет, вывод вернет только по окончании работы команды.
Можешь конечно по экспериментировать.
Спустя 14 минут, 50 секунд (25.02.2012 - 20:10) killer8080 написал(а):
zeromind
попробуй все таки перенаправить вывод в файл. Посмотри будет ли он доступен на чтение, в процессе конвертации.
попробуй все таки перенаправить вывод в файл. Посмотри будет ли он доступен на чтение, в процессе конвертации.
Спустя 9 минут, 35 секунд (25.02.2012 - 20:19) zeromind написал(а):
killer8080
output.txt совсем пустой оказался 0 байт,
exec('ffmpeg -i ' . $filename . ' -f mp4 -b 512k -vcodec libx264 -vpre faster -acodec libfaac -ar 44100 -ab 96k -threads 2 ' . $filetmp . ' &> ' . ROOT . 'output.txt && qt-faststart ' . $filetmp . ' ' . $filenew);
вроде бы всё правильно же?
add:
теперь даже конечного $filenew нету, ошибка) где то тут $filetmp . ' &> ' . ROOT . 'output.txt, хотя файл создается, но пустой!
output.txt совсем пустой оказался 0 байт,
exec('ffmpeg -i ' . $filename . ' -f mp4 -b 512k -vcodec libx264 -vpre faster -acodec libfaac -ar 44100 -ab 96k -threads 2 ' . $filetmp . ' &> ' . ROOT . 'output.txt && qt-faststart ' . $filetmp . ' ' . $filenew);
вроде бы всё правильно же?
add:
exec('ffmpeg -i ' . $filename . ' -f mp4 -b 512k -vcodec libx264 -vpre faster -acodec libfaac -ar 44100 -ab 96k -threads 2 ' . $filetmp . ' &> ' . ROOT . 'output.txt && qt-faststart ' . $filetmp . ' ' . $filenew);
unlink($filename);
unlink($filetmp);
теперь даже конечного $filenew нету, ошибка) где то тут $filetmp . ' &> ' . ROOT . 'output.txt, хотя файл создается, но пустой!
Спустя 4 минуты, 6 секунд (25.02.2012 - 20:23) killer8080 написал(а):
zeromind
может попробовать команды ffmpeg и qt-faststart выполнить по отдельности?
может попробовать команды ffmpeg и qt-faststart выполнить по отдельности?
Спустя 54 секунды (25.02.2012 - 20:24) zeromind написал(а):
Цитата (killer8080 @ 25.02.2012 - 20:23) |
zeromind может попробовать команды ffmpeg и qt-faststart выполнить по отдельности? |
щяс так и сделаю)
Спустя 1 минута, 11 секунд (25.02.2012 - 20:26) killer8080 написал(а):
и главное
Цитата (killer8080 @ 25.02.2012 - 19:10) |
Посмотри будет ли он доступен на чтение, в процессе конвертации. |
Спустя 6 минут, 41 секунда (25.02.2012 - 20:32) zeromind написал(а):
Цитата (killer8080 @ 25.02.2012 - 20:26) | ||
и главное
|
я в реальном времени, через sftp смотрю корень сайта, файл output.txt 0 байт, скачать и помотреть его можно, но он пустой)),
наверно надо команду писать как shell_exec() вместо exec() ? щяс попробую..
Спустя 5 минут, 41 секунда (25.02.2012 - 20:38) killer8080 написал(а):
zeromind
shell_exec() то же самое, что и кавычки ``
думаю разницы никакой не будет с exec()
shell_exec() то же самое, что и кавычки ``
думаю разницы никакой не будет с exec()
Спустя 2 минуты, 36 секунд (25.02.2012 - 20:40) zeromind написал(а):
и в чем может быть проблема? тут брал инфу, щяс ещё погуглю, как правильно записать инфу в файл )
Спустя 28 минут, 56 секунд (25.02.2012 - 21:09) killer8080 написал(а):
Цитата (zeromind @ 25.02.2012 - 19:32) |
я в реальном времени, через sftp смотрю корень сайта, файл output.txt 0 байт |
а конвертация при этом происходит? Может ошибка какая?
Спустя 4 минуты, 47 секунд (25.02.2012 - 21:14) zeromind написал(а):
происходит!
интересная статья!
там же нашел готовый вариант (сейчас качаю) - http://sourceforge.net/projects/ffmpegprogress/
Features
Show the Converting Progress from FFMPEG
Using PHP, JavaScript, Ajax and MySQL
Using the getID3 Libary
интересная статья!
там же нашел готовый вариант (сейчас качаю) - http://sourceforge.net/projects/ffmpegprogress/
Features
Show the Converting Progress from FFMPEG
Using PHP, JavaScript, Ajax and MySQL
Using the getID3 Libary