2011-01-25 6 views
1

Мне нужен конкретный код для проверки с помощью PHP, если это сделано для кодирования видео с помощью ffmpeg. Мне просто нужна простая проверка true/false. Истина, если кодировка выполнена, и false, если это не сделано. Также язык PHP, и у меня есть ffmpeg-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); 

} 
+0

Проверьте это: https://github.com/alixaxel/phunction/blob/b9afe8409c9e0b9d2ccb1696ef07469d70bd1e05/_.php#L1076. –

ответ

1

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

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

#!/bin/bash 

OUTDIR=/var/www/html/video 

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

RETURNED=$? 

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

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

+0

Есть ли способ сделать это с помощью PHP? – Kevin

3

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

Просто оканчивайте линию ffmpeg символом ";" и введите «php», за которым следует абсолютное местоположение вашего скрипта php для запуска. Вы можете добавить переменную ПОЛУЧИТЬ с идентификатором видео вы ждете, чтобы быть преобразованы:

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

exec($cmd); 
+1

Здесь просто нужно отметить, что новая страница php, которая будет выполнена, будет выполнена с конфигурацией CLI, а не с конфигурацией CGI или Apache2. –

+0

Хороший трюк, хорошая идея! –

+0

Можно ли связать вывод с php-скриптом с помощью этого метода? – Ben

1

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

Смежные вопросы