Как проверить, что ffmpeg выполняет кодирование видео с помощью PHP? - PullRequest
1 голос
/ 26 января 2011

Мне нужен специальный код, чтобы проверить с помощью PHP, выполняется ли кодирование видео с помощью ffmpeg. Мне просто нужна простая проверка истинности / ложности. True, если кодирование выполнено, и false, если это не сделано. Также язык - PHP, и у меня установлен ffmpeg-php.

Дополнительная информация: я нахожусь на Linux.

Код ниже

convertToFlv( $input, $output );

function convertToFlv( $input, $output ) {

echo "Converting $input to $output";

$command = "ffmpeg -y -i $input -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -level 41 -crf 20 -bufsize 20000k -maxrate 25000k -g 250 -r 20 -s 640x480 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +brdo+dct8x8+bpyramid -me umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 $output";

shell_exec( $command );

}

Ответы [ 3 ]

3 голосов
/ 27 января 2011

Вы можете добавить еще одну строку кода после ffmpeg в php exec (), чтобы запустить страницу php в командной строке.

Просто завершите свою строку ffmpeg ";" и введите «php», а затем абсолютное местоположение вашего php-скрипта для запуска. Вы можете добавить переменную get с идентификатором видео, которое вы хотите конвертировать:

$cmd = "ffmpeg -i[SOURCE FILE] [OUTPUT FILE]; php /public_html/etc/ffmpegComplete.php?videoID=101";

exec( $cmd );
1 голос
/ 27 января 2011

Простой ответ - проверить, все ли еще работает процесс, что означает либо фильтрацию вывода ps, либо отслеживание PID процесса ffmpeg и проверку с помощью pcntl_waitpid.

1 голос
/ 26 января 2011

Может быть, вы могли бы дать нам подсказку, как вы отключаете кодировку? А на какой ОС вы работаете?

Предполагая, что вы делаете это правильно в системе Unix / POSIX / Linux - то есть вы создали новый процесс в отдельной группе процессов и не можете напрямую прочитать возвращаемое значение, тогда почему бы вам не просто оберните двоичный файл ffmpeg в простой скрипт sh - что-то вроде:

#!/bin/bash

OUTDIR=/var/www/html/video

/usr/local/bin/ffmpeg -s sqcif -i $1 ${OUTDIR}/${2}.mpeg`

RETURNED=$?

echo ${RETURNED} >${OUTDIR}/${2}.completion

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...