我正在使用一个网站脚本,但遗憾的是该脚本由某个人创建,而他并未就此问题提供任何帮助。
以下是一段代码:
$com=$global_settings["ffmpeg_path"]." -i \"".$apath."\" -vcodec libx264 -strict -2 -t ".$duration." -vf 'movie=".$_SERVER["DOCUMENT_ROOT"].site_root."/content/watermark-video.png [wm];[in][wm] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]' -vf scale=498:-1 ".$flv_path;
它应该能满足我的需求,也就是本文标题中描述的那样,但它却不能。它可以缩放视频,但不应用 png 水印。任何帮助都将不胜感激。
答案1
filter_complex
因为overlay
过滤器使用多个输入,所以使用。您的通用命令行将如下所示:
ffmpeg -i <input> -filter_complex "movie=<path to png>[image],[0:v]scale=h:w[scaled],[scaled][image]overlay[out]" -vcodec libx264 -strict -2 -t <duration> -map [out] <outfile>
更具体针对您的情况:
if($global_settings["ffmpeg_watermark"])
{
$com=$global_settings["ffmpeg_path"]." -i \"".$apath."\" -vcodec libx264 -strict -2 -t ".$duration." -filter_complex 'movie=".$_SERVER["DOCUMENT_ROOT"].site_root."/content/watermark-video.png [wm];[0:v]scale=498:-1[scaled];[scaled][wm] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]' -map [out] " .$flv_path;
}
else
{
$com=$global_settings["ffmpeg_path"]." -i \"".$apath."\" -vcodec libx264 -strict -2 -t ".$duration." ".$flv_path;
}
exec($com);