我正在尝试向视频文件添加水印,但水印的背景存在问题,因为我希望它是透明的。
我的方法是这样的:我制作了一个具有透明背景的视频大小的 png 文件,如下所示
$im = imagecreatetruecolor($width, $height);
$almostblack = imagecolorallocate($im,254,254,254);
imagefill($im,0,0,$almostblack);
$black = imagecolorallocate($im,0,0,0);
imagecolortransparent($im,$almostblack);
$textcolor = imagecolorallocate($im, 255, 0, 0);
// Write the string at the top left
imagestring($im, 5, 0, 0, 'Hello world!', $textcolor);
imagepng($im, $img);
imagedestroy($im);
然后我像这样将它添加到视频中
exec("/usr/bin/ffmpeg -y -i '$file->path' -sameq -vf 'movie=$img [logo]; [in][logo] overlay=main_w-overlay_w:main_h-overlay_h [out]' '$new_path'");
添加了水印,但它的背景不透明。
知道我在做什么错吗?
更新:事实证明它适用于其他 png 图像,所以问题一定出在我构建 png 文件的方式上,任何想法为什么它不能那样工作?