У меня есть ffmpeg, установленный на Сервере Ubuntu, и я выполняю PHP от другой отправки веб-сервера команды к Серверу Ubuntu.
$ff = '/usr/bin/ffmpeg -i '.$file.' -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -s '.$RESOLUTION.' -vb '.$VB.'k -ac 2 -acodec aac -b:a 128k -ar 44100 -strict -2 -vf "movie=/datastore/logo/hello_logo.png [watermark]; [in][watermark] overlay=60:main_h-overlay_h-60 [out]" /tmp/'.$MXF.'.mp4 -y';
if(!($tra= ssh2_exec($con,$ff))) {
echo "failed to execute the Command";
}
else {
$stream3 = ssh2_exec($con, $command_save);
stream_set_blocking($tra, true);
$tra_out = ssh2_fetch_stream($tra, SSH2_STREAM_STDERR);
var_dump($tra_out);
$file1=stream_get_contents($tra_out);
var_dump($file1);
echo $file1;
}
Я испытываю затруднения при передаче $file
переменная к ffmpeg.
Согласно Вашему комментарий , $file
содержит вывод пути find
. Тот путь, вероятно, будет содержать пробелы.
Используя путь, содержащий пробелы в команде, вероятно, повредит его. Поэтому просто включите путь к двойным кавычкам:
$ff = '/usr/bin/ffmpeg -i "'.$file.'" -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -s '.$RESOLUTION.' -vb '.$VB.'k -ac 2 -acodec aac -b:a 128k -ar 44100 -strict -2 -vf "movie=/datastore/logo/hello_logo.png [watermark]; [in][watermark] overlay=60:main_h-overlay_h-60 [out]" /tmp/'.$MXF.'.mp4 -y';