Я использую FFMpeg для скрытых видеороликов, и он отлично работает из командной строки . Я использую следующую команду:
ffmpeg -i input.mpg -vcodec libx264 -b 819200 -s 100x100 -g 15 -bf 3 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 -sc_threshold 40 -flags +loop -cmp +chroma -me_range 16 -me_method hex -subq 5 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -directpred 1 -flags2 +fastpskip -dts_delta_threshold 1 -acodec libfaac -ab 48000 output.m4v
Однако, когда я запускаю команду с помощью PHP exec (), выходное видео неправильно закодировано и искажено и обрезано . Я использую следующее в PHP:
$output = exec($cmd . ' 2>&1', $output, $return);
Результат $ возвращает код '0'.
У кого-нибудь есть предложения?
Спасибо.
Это необычно. Возможно, у вас установлено более одного двоичного файла ffmpeg, и тот, который вызывается пользователем PHP / Apache, отличается от того, который вы вызываете в качестве пользователя из командной строки.
Попробуйте указать полный путь к двоичному файлу ffmpeg (/ usr / bin / ffmpeg или что-то еще) внутри вашего exec ().
Похоже, что некоторые параметры командной строки теряются / изменяются. Я бы попытался разделить это на 2 части процесса:
Я бы, наверное, попытался:
1) измените '2> & 1' на '2> & 1 &'
Кроме того, перекодирование может занять некоторое время. Вы уверены, что долго ожидаете завершения транскода?