Ubuntu 上的 PHP 和 ffmpeg

Ubuntu 上的 PHP 和 ffmpeg

我在 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';

相关内容