我在 Ubuntu Server 上安装了 ffmpeg,并且正在从另一个 Web 服务器运行 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。
答案1
根据你的评论,$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';