我有下一个轨道方案。我需要使用 ffmpeg 将该轨道渲染为一个轨道。
渲染后应该看起来像
我想使用下一个方案:
- 将轨道 001 渲染至文件。
- 将轨道 002 渲染至文件。
- 将轨道 002 叠加在轨道 001 上。
对于“曲目 001”,我可以将剪辑“连接”到一条曲目,没有任何问题。
但问题是我应该如何连接“Track 002”的剪辑?“空”位置必须是透明的,才能在第 3 步进行叠加。
我已经尝试使用透明色作为空白位置输入。但在覆盖步骤中,透明色不起作用。
ffmpeg -f lavfi -i [email protected]:s=1920x1080:r=25:d=1 \
-i Clip004.mp4 \
-i Rendered_track_001.mp4 \
-filter_complex "[0:v] [1:v] xfade=transition=fade:duration=2:offset=0.5[trak]; \
[2:v][trak]overlay[out]" \
-map "[out]" -c:v vp9 -c:a copy test.webm
我也尝试过像这样使用 alphaextract 和 alphamerge
ffmpeg -f lavfi -i [email protected]:s=1920x1080:r=25:d=1 \
-i Clip004.mp4 \
-i Rendered_track_001.mp4 \
-filter_complex "[0:v] [1:v] xfade=transition=fade:duration=2:offset=0.5[out]; \
[out]alphaextract[alpha];[2:v][alpha]alphamerge[out1]" \
-map "[out1]" -c:v vp9 -c:a copy test.webm
但它失败并出现错误
[AVFilterGraph @ 0x556557d3ce00] The following filters could not choose their formats:
Parsed_alphaextract_1
Consider inserting the (a)format filter near their input or output.
Error reinitializing filters!
Failed to inject frame into filter network: Input/output error
Error while processing the decoded data for stream #2:0
任何帮助,将不胜感激。
答案1
有几个问题:
看起来它没有产生透明的视频。 解决方案是使用过滤器,而不是:...
-f lavfi -i [email protected]:s=1920x1080:r=25:d=1
color
lavfi
-filter_complex "[email protected]:s=1920x1080:r=25:d=1,format=rgba[transparent]
[2:v][alpha]alphamerge[out1]
没有效果,因为vp9
编解码器不支持透明度。
要测试具有透明度的视频,我们可以使用libvpx-vp9
编解码器和-pix_fmt yuva420p
。
很难说这是否正是你想要的,但我希望它接近:
ffmpeg -y -i Clip004.mp4 -i Rendered_track_001.mp4 -filter_complex "[email protected]:s=1920x1080:r=25:d=1,format=rgba[transparent];[0:v]format=rgba[v0];[transparent][v0]xfade=transition=fade:duration=2:offset=0.5,format=rgba[trak];[1:v][trak]overlay=shortest=1[out]" -map "[out]" -c:v vp9 -c:a copy test.webm
用于测试的 Buildid 合成输入:
由于您没有发布Clip004.mp4
和Rendered_track_001.mp4
,我使用合成模式进行测试:
ffmpeg -y -f lavfi -i mandelbrot=size=1920x1080:rate=25 -video_track_timescale 25 -t 5 Clip004.mp4
ffmpeg -y -f lavfi -i testsrc=size=1920x1080:rate=25:duration=5 -video_track_timescale 25 Rendered_track_001.mp4
- 注意:如果不添加
-video_track_timescale 25
,则会出现错误信息:
第一个输入链接主时间基 (1/25) 与相应的第二个输入链接 xfade 时间基 (1/12800) 不匹配