我正在尝试满足使用 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 output.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 output.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
但这会产生以下错误:
为“格式”过滤器指定的输入过多。初始化复杂过滤器时出错。无效的论点
完整错误:
输入 #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
元数据: major_brand : mp42 minor_version : 0 compatible_brands: mp42mp41 creation_time : 2018-03-09T20:52:18.000000000持续时间:00:00:30.00,开始:0.000000,比特率:8002 kb/s
流 #0:0(eng):视频:h264(高)(avc1 / 0x31637661),yuv420p(tv,bt709),1920x1080 [SAR 1:1 DAR 16:9],7997 kb/s,24 t br,2 , 24k tb, 48 tbc(默认)
元数据:creation_time:2018-03-09T20:52:18.000000Z handler_name:别名数据处理程序编码器:AVC 编码输入#1,图像2,来自'image.jpg':
持续时间:00:00:00.04,开始:0.000000,比特率:526829 kb/s
流 #1:0:视频:mjpeg、yuvj444p(pc、bt470bg/unknown/unknown)、3840x2160 [SAR 96:96 DAR 16:9]、25 tbr、25 tbn、25 tbc 输入 #2,来自 png_text .png':持续时间:不适用,比特率:不适用
流 #2:0:视频:png、rgba(pc)、1500x1500、25 tbr、25 tbn、25 tbc [AVFilterGraph @ 0x7fc37d402de0]
为“格式”过滤器指定的输入过多。初始化复杂过滤器时出错。无效的论点
我可以通过调整命令来解决这个问题,这样文本就不是叠加层的输入:
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
Run Code Online (Sandbox Code Playgroud)
文本覆盖在视频的顶部,然后覆盖在图像的顶部。
| 归档时间: |
|
| 查看次数: |
5241 次 |
| 最近记录: |