2

我有四个视频,我想将它们多路复用成一个视频,并将文本放在每个象限的左上角。我可以成功混合视频,使得 vid1 在左上角,vid2 在右上角,vid3 在左下角,vid4 在右下角。

但是,我什至无法使用 drawtext 命令显示简单的文本。

我想将原始视频文件的名称放在每个象限中。

目前我的命令是这样的:

ffmpeg.exe -i "vid1.mp4" -i "vid2.mp4" -i "vid3.mp4" -i "vid4.mp4"  -filter_complex "[0:0]scale=iw/2:ih/2,pad=iw*2:ih*2[a];[1:0]scale=iw/2:ih/2[b];[2:0]scale=iw/2:ih/2[c];[3:0]scale=iw/2:ih/2[d];[a][b]overlay=w[x];[x][c]overlay=0:h[y];[y][d]overlay=w:h" -vf [0]drawtext=fontsize=12:fontcolor=white:fontfile="/Windows/Fonts/arial.ttf":text="vid1":x=35:y=35[out] "4UP_Video.mov"

如果我删除 drawtext 命令,我会得到相同的结果:不错的 4-Up 视频,但没有文本。我的假设是,对于其他象限,我会在输入流中添加另一个 drawtext 命令#,例如

[1]drawtext ...

任何帮助表示赞赏!

4

1 回答 1

1

drawtext过滤器添加到您当前的过滤器链中,而不是创建一个新的过滤器。

ffmpeg.exe -i vid1.mp4 -i vid2.mp4 -i vid3.mp4 -i vid4.mp4 -filter_complex "[0:0]scale=iw/2:ih/2,pad=iw*2:ih*2[a];[1:0]scale=iw/2:ih/2[b];[2:0]scale=iw/2:ih/2[c];[3:0]scale=iw/2:ih/2[d];[a][b]overlay=w[x];[x][c]overlay=0:h[y];[y][d]overlay=w:h,drawtext=fontsize=12:fontcolor=white:fontfile=/Windows/Fonts/arial.ttf:text='vid1':x=35:y=35,drawtext=fontsize=12:fontcolor=white:fontfile=/Windows/Fonts/arial.ttf:text='vid2':x=(w/2)+35:y=35,drawtext=fontsize=12:fontcolor=white:fontfile=/Windows/Fonts/arial.ttf:text='vid3':x=35:y=(h/2)+35,drawtext=fontsize=12:fontcolor=white:fontfile=/Windows/Fonts/arial.ttf:text='vid4':x=(w/2)+35:y=(h/2)+35" 4UP_Video.mov

请在 superuser.com 上询问未来的 ffmpeg 使用问题。Stack Overflow 仅限于编程。

于 2012-12-11T19:34:13.480 回答