如何在视频的子部分设置叠加图像?

时间:2016-10-27 07:53:33

标签: video ffmpeg video-processing

我需要在视频的子部分设置叠加层(image.png带alpha通道)。在整个视频中设置它非常有效。但是我需要在开始时和视频结尾处制作没有PNG的10秒间隙。

因此叠加层应该在开始后的第10秒出现,并在(长度 - 10)秒后自动消失。我花了一天时间试图让它工作,但似乎trim视频过滤器根本不支持修剪"单PNG图像视频流"。

在此命令中

ffmpeg -y -i "$INPUT" -i "$PNG" -c:v libx264 -preset ultrafast -filter_complex \
"[0:v]setpts=0.5*PTS,fps=25[vm]; [1:0]trim=10:190[vo]; [vm][vo]overlay=x=0:y=0:overlay=eof_action=pass[v]; [0:a]atempo=2.0[a]" \
-map "[v]" -map "[a]" qtest_AVUP.avi

190应该用一些功能/计算代替,但真正的问题是覆盖层根本不应用。结果我们得到了没有叠加层的普通视频。 你能帮我解决这个问题吗?

  1. 如何解决叠加不适用错误?
  2. 如何设置(video_stream_length-10s)而不是190?

1 个答案:

答案 0 :(得分:1)

请尝试使用此代码来覆盖代码:

-filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,20,40)'" 

这会使你的叠加层在20到40秒之间。您必须进行计算才能获得EOF-10。以下是获取视频时长的一些代码:

DURATION=$(ffprobe -v error  -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $INPUT )