使用 ffmpeg 将视频叠加在图像上

使用 ffmpeg 将视频叠加在图像上

我正在尝试使用以下命令将视频叠加在图像上。

 -y -loop 1 -i snowflake.png
 -i crack.mp4
 -filter_complex "[0][1]scale2ref[i][m];[m][i]overlay[v]" -map [v] -map 0:a? -ac 2 output.mp4

上述命令有效,但它将图像叠加在视频上,而不是将视频叠加在图像上。

我也尝试使用以下命令,但是当我运行该命令时,它会从路径中删除文件路径分隔符“\”,从而导致找不到文件的错误。

-loop 1 -i C:\Users\Desktop\SAM\Effects\snowflake.png
-vf "movie=C:\Users\Desktop\SAM\Effects\crack.mp4,scale=128:96[inner];[in][inner]overlay=70:70:shortest=1[out]" -y output.mp4

我看了一段 YouTube 视频,了解了我想要的确切效果,并从中复制了命令,但仍然出现相同的错误,没有合适的输出格式。这是命令

-loop 1 -i C:\Users\Vivek\Desktop\SAM\Effects\A.jpg -i C:\Users\Vivek\Desktop\SAM\Effects\crack.mp4 -filter_complex "[1:v]colorkey=0x000000:0.5:0.5[ckout];[0:v][ckout]overlay[out]" -map "[out]" -c:a copy -c:v libx264 C:\Users\Vivek\Desktop\SAM\Effects\out.mp4

如何使该命令起作用。

以下是错误截图。我无法在此处发布日志,因为错误未出现在日志中。

错误

供参考:我在 Unity 中使用 ffmpeg 并使用 FFMPEG 绑定资产。

答案1

您遇到了不可见的字符,零宽度非连接符 (U+200C) 和零宽度空格 (U+200B),这些字符可能是由您的文本编辑器添加的。如果您粘贴到以下位置,就会看到它们vim

String[]sepCmd=new String[]{"-i",overlayUri,"-i",uri,"-filter_complex","[1:v][0<200c><200b>:v]scale2ref[ua][b<200c><200b>];<200c><200b>[ua]setsar=1,format=<200c><200b>yuva444p,colorchanne<200c><200b>lmixer=aa=0.5[u];[b]<200c><200b>[u]overlay"<200c><200b>,outputPa<200c><200b>th}

您可能遇到的与此感染相关的错误:

  • Invalid stream specifier:
  • No such filter: '‌​'
  • Error initializing filter
  • Unable to find a suitable output format

删除这些字符并使用更好的文本编辑器:不是记事本或 MS Word。

相关内容