gpt4 book ai didi

video - 使用 ffmpeg 进行多重叠加

转载 作者:行者123 更新时间:2023-12-04 01:57:41 29 4
gpt4 key购买 nike

我正在尝试满足一些使用 ffmpeg 构建视频文件的分层场景。

场景 1:在图像之上叠加视频(指定视频的不透明度),从而创建一个新视频。

我解决了这个问题:

ffmpeg -i video.mp4 -i image.jpg -filter_complex '[0]format=rgba,colorchannelmixer=aa=0.7,scale=w=3840:h=2160[a];[1][ a]overlay=0:0' -t 30 输出.mp4

我正在将视频缩放到 3840x2160 以匹配我的图像(理想情况下我会让它们事先匹配)。

场景 2:现在 3 层,视频 - 图像 - 图像。中间图像层是带有文本的透明图像。所以我们有一个基本图像,上面覆盖了文本,并且在其上面有一个特定不透明度的视频。

我解决了这个问题:

ffmpeg -i video.mp4 -i image.jpg -i text.png -filter_complex '[0]format=rgba,colorchannelmixer=aa=0.7,scale=w=3840:h=2160[a] ;[2][a]overlay=0:0,scale=w=3840:h=2160[b];[1][b]overlay=0:0' -t 30 输出.mp4

场景 3(我无法开始工作):与场景 #2 相同,但文本位于视频顶部。

我尝试重新安排我的过滤器,希望能影响分层顺序:

ffmpeg -i video.mp4 -i image.jpg -i text.png -filter_complex '[2]overlay=0:0,scale=w=3840:h=2160[a];[0] [a]format=rgba,colorchannelmixer=aa=0.7,scale=w=3840:h=2160[b];[1][b]overlay=0:0' -t 5 output.mp4

但这会产生以下错误:

Too many inputs specified for the "format" filter. Error initializing complex filters. Invalid argument

完整错误:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42mp41 creation_time : 2018-03-09T20:52:18.000000Z

Duration: 00:00:30.00, start: 0.000000, bitrate: 8002 kb/s

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 7997 kb/s, 24 fps, 24 tbr, 24k tbn, 48 tbc (default)

Metadata: creation_time : 2018-03-09T20:52:18.000000Z handler_name : Alias Data Handler encoder : AVC Coding Input #1, image2, from 'image.jpg':

Duration: 00:00:00.04, start: 0.000000, bitrate: 526829 kb/s

Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 3840x2160 [SAR 96:96 DAR 16:9], 25 tbr, 25 tbn, 25 tbc Input #2, png_pipe, from 'text.png': Duration: N/A, bitrate: N/A

Stream #2:0: Video: png, rgba(pc), 1500x1500, 25 tbr, 25 tbn, 25 tbc [AVFilterGraph @ 0x7fc37d402de0]

Too many inputs specified for the "format" filter. Error initializing complex filters. Invalid argument

我可以通过调整命令来解决这个问题,这样文本就不是叠加层的输入:

ffmpeg -i lightTexture.mp4 -i image.jpg -i textSample.png -filter_complex '[2]overlay=0:0,scale=w=3840:h=2160;[0]format=rgba ,colorchannelmixer=aa=0.7,scale=w=3840:h=2160[b];[1][b]overlay=0:0' -t 5 output_text_on_top.mp4

但是我的输出视频全乱了。我怀疑我试图将所有这些塞进 -filter_complex 是走错了路。我想知道我是否需要创建两个叠加层然后叠加它们(即将文本叠加到视频上,然后将其叠加到基本图像上),但我不确定如何实现。

如果有人能在这里为我指明正确的方向,我将不胜感激。

最佳答案

我将跳过缩放,因为我假设您会根据需要进行匹配或缩放

ffmpeg -i video.mp4 -i image.jpg -i text.png \
-filter_complex \
'[0]format=rgba,colorchannelmixer=aa=0.7[v]; \
[v][2]overlay=0:0[vt]; \
[1][vt]overlay=0:0' output.mp4

文本覆盖在视频之上,然后视频覆盖在图像之上。

关于video - 使用 ffmpeg 进行多重叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49454740/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com