本质上,我想做的是将 a.mp4 与 b.mp4 连接起来,在整个视频持续时间内显示我的一组 %c.png 覆盖在顶部,并显示 d.png 覆盖在顶部,但仅显示 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
颈须大人,我知道你在外面。我已经阅读了您关于使用complex_filter 淡入/淡出的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
避免在每个过滤器链中对输入和输出使用相同的链接标签:
- 错误:
[v3]filter0,filter1[v3]
- 右:
[v3]filter0,filter1[foo]
- 错误:
添加
-loop 1
作为d.png
的输入选项可以让淡入淡出按预期工作。否则它充当单个帧而不是连续流。默认情况下,overlay
将循环覆盖输入的最后一帧,这就是它停留在那里的原因。可以使用eof_action
覆盖选项更改该行为。默认情况下 image file demuxer将为
c_%03d.png
使用-framerate 25
,因此您可能需要将其添加为输入选项,并使用适当的值来更改帧速率和持续时间特定输入。使用 x264 预设,而不是列出大量编码选项。请参阅FFmpeg Wiki: H.264 Encoding Guide .
并非所有玩家都会关注视频流旋转元数据。
关于ffmpeg complex_filter 淡出不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573851/