ffmpeg复合滤波器衰减不工作

ffmpeg复合滤波器衰减不工作,ffmpeg,Ffmpeg,基本上,我要做的是将a.mp4与b.mp4合并,在整个视频期间显示我的%c.png覆盖ontop集,并显示d.png覆盖ontop,但仅显示1秒,然后将其淡出。除d.png保持覆盖且永不褪色外,所有这些都有效: ffmpeg -i ./temp/a.mp4 -i media/b.mp4 -i media/splash/%c.png -i ./temp/d.png -y -filter_complex [0:v]scale=568x320,setpts=PTS-STARTPTS[v0];[1:v]

基本上,我要做的是将a.mp4与b.mp4合并,在整个视频期间显示我的%c.png覆盖ontop集,并显示d.png覆盖ontop,但仅显示1秒,然后将其淡出。除d.png保持覆盖且永不褪色外,所有这些都有效:

ffmpeg -i ./temp/a.mp4 -i media/b.mp4 -i media/splash/%c.png -i ./temp/d.png -y -filter_complex [0:v]scale=568x320,setpts=PTS-STARTPTS[v0];[1:v]scale=568x320,setpts=PTS-STARTPTS[v1];[2:v]scale=212:242,setpts=PTS-STARTPTS[v2];[3:v]trim=duration=0.5,fade=t=out:st=0:d=0.5[3:v];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[bg][a];[bg][v2]overlay=(W-w)/2:(H-h)/2,format=yuv420p[v];[v][3:v]overlay=(W-w)/2:(H-h)/2,format=yuv420p[v] -map [v] -map [a] -r 29.97 -vcodec libx264 -s 568x320 -flags +loop -b 400k -bufsize 4M -bt 256k -refs 1 -coder 0 -me_range 16 -subq 4 -partitions +parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec aac -strict experimental -ab 80k -ar 48000 -ac 2 -strict experimental -f mp4 -metadata:s:v:0 rotate=90 ./temp/1428723401371.mp4
奈克比尔德勋爵,我知道你在外面。我已经阅读了几个小时你关于使用复杂过滤器淡入/淡出的stackoverflow帖子,但我尝试过的都没有成功。主啊,请接受以上作为我对你的卑微奉献,并帮助我在1秒后淡出d.png。

试试这个:

ffmpeg -y -i a.mp4 -i b.mp4 -i c_%03d.png -loop 1 -i d.png -filter_complex \
"[0:v]scale=568:-2,setpts=PTS-STARTPTS[v0]; \
 [1:v]scale=568:-2,setpts=PTS-STARTPTS[v1]; \
 [2:v]scale=212:-1,setpts=PTS-STARTPTS[v2]; \
 [3:v]trim=duration=0.5,fade=t=out:st=0:d=0.5[v3]; \
 [v0][0:a][v1][1:a]concat=n=2:v=1:a=1[bg][a]; \
 [bg][v2]overlay=(W-w)/2:(H-h)/2[bg2]; \
 [bg2][v3]overlay=(W-w)/2:(H-h)/2,format=yuv420p[v]" \
-map "[v]" -map "[a]" -c:v libx264 -preset fast -c:a aac -strict experimental \
-ab 80k -metadata:s:v:0 rotate=90 -movflags +faststart output.mp4
  • 避免在每个filterchain的输入和输出中使用相同的链接标签:

    • 错误:
      [v3]过滤器0,过滤器1[v3]
    • 右:
      [v3]过滤器0,过滤器1[foo]
  • 添加
    -loop 1
    作为
    d.png
    的输入选项,可以使淡入淡出按预期工作。否则,它将充当单个帧,而不是连续流。默认情况下,
    overlay
    将循环覆盖输入的最后一帧,因此它就停留在那里。可以使用
    eof_action
    overlay选项更改该行为

  • 默认情况下,将使用
    -framerate 25
    作为
    c_u%03d.png
    的输入选项,因此您可能希望将其添加为具有适当值的输入选项,以更改帧速率,从而更改特定输入的持续时间

  • 使用x264预设,而不是列出大量编码选项。看

  • 并非所有玩家都会关注视频流旋转元数据


覆盖过滤器有一个“repeatlast”设置,默认设置为打开。在覆盖过滤器链中设置repeatlast=0,然后将看到主视频。很抱歉,我迟到了几年,希望这个答案仍能对某人有所帮助。

这正是你的标签。您可以显示命令的完整控制台输出吗?那么我明天会试着发布一个答案。快速查看冗长的命令,可以看到
[3:v]
被用作
修剪、淡入
过滤器链的输入和输出链接标签。我不确定
ffmpeg
将如何处理这个问题。@LordNeckbeard这是我的原始命令和输出:-我尝试更改[3:v]的输出,尽管我得到了相同的结果。