FFMPEG使用filter-complex的多个命令

时间:2018-02-28 11:30:55

标签: ffmpeg

我拼凑了3个命令,但我的解决方案涉及编写一些临时文件。我最终想把一个命令的输出传递给下一个命令,而没有临时文件。

虽然很多问题都讨论过滤器复杂(这是我相信结果作为输入完成的方式),但我似乎无法找到使用filter_complexs流入其他filter_complex命令的命令示例(嵌套过滤器复杂命令? )。在我的示例中,需要两个不同的输入,从而产生一个输出。

/* 
Brighten & increase saturation of original image 
Remove white shape from black background silhouette, leaving a transparent shape
Overlay black background silhouette over brightened image. Creating a focus point
*/
ffmpeg -i OrigionalImage.png -vf eq=brightness=0.06:saturation=2 -c:a copy BrightenedImage.png
ffmpeg -i WhiteSilhouette.png -filter_complex "[0]split[m][a]; [a]geq='if(lt(lum(X,Y),16),255,0)',hue=s=0[al]; [m][al]alphamerge" -c:a copy TransparentSilhouette.png
ffmpeg -i BrightenedImage.png -i TransparentSilhouette.png -filter_complex "[0:v][1:v] overlay=(W-w)/2:(H-h)/2" -c:a copy BrightnedSilhouette.png

两个原始输入和最终输出

原始图像 OrigionalImage

白色轮廓 WhiteSilhouette

明亮的轮廓 BrightnedSilhouette

1 个答案:

答案 0 :(得分:1)

使用

ffmpeg -i OriginalImage.png -i WhiteSilhouette.png  -filter_complex "[0]eq=brightness=0.06:saturation=2[img];[1]split[m][a];[a]geq='if(lt(lum(X,Y),16),255,0)',hue=s=0[al];[m][al]alphamerge[sil];[img][sil]overlay=(W-w)/2:(H-h)/2" BrightnedSilhouette.png

您也可以将WhiteSilouhette反转为生成alpha,

ffmpeg -i OriginalImage.png -i WhiteSilhouette.png  -filter_complex "[0]eq=brightness=0.06:saturation=2[img];[1]split[m][a];[a]geq='255-lum(X,Y)',hue=s=0[al]; [m][al]alphamerge[sil];[img][sil]overlay=(W-w)/2:(H-h)/2" BrightnedSilhouette.png