Мне нужен конкретный код для проверки с помощью PHP, если это делается для кодирования видео с помощью ffmpeg. Мне просто нужна простая проверка true / false. Истина, если кодировка выполнена, и 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 ); }
Вы можете добавить еще одну строку кода после 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 );
Может быть, вы могли бы дать нам понять, как вы начинаете кодирование? И в какой ОС вы работаете?
Предполагая, что вы делаете это правильно в системе Unix / POSIX / Linux, то есть вы создали новый процесс в отдельной группе процессов и не можете напрямую прочитать возвращаемое значение, то почему бы вам просто не обернуть ffmpeg binary в простом скрипте 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
… тогда вы можете увидеть, когда скрипт закончил, и успешно ли он работал.
Простой ответ заключается в проверке, продолжает ли процесс, что означает либо фильтрацию вывода ps
либо отслеживание PID процесса ffmpeg и проверку через pcntl_waitpid
.