FFMPEG 给视频添加圆形遮罩,转换为黑白并拼接
FFMPEG add circular mask to videos, convert to black and white and concatenate
大家好,我是初学者,非常感谢您的帮助。
我正在制作一个移动应用程序,它根据用户从他的 phone 中获取的视频生成自定义视频简历,用户必须从移动应用程序将 5 个不同的视频上传到服务器,在服务器中我想:
- 为每个视频添加一个 .png 圆形遮罩。
- 将每个视频设为黑白。
将视频与其他已存在的标题视频连接起来
(例如 [userVideo1] [title1] [userVideo2] [title2]...)Visual Example
[编辑:我想要更多功能]
- 添加背景音乐
- 中间加水印logo
- 从开头和结尾删除无声镜头
- 一些输入视频可能会旋转,如果旋转了,我想将视频旋转回正常。
到目前为止,我设法添加了圆形蒙版,将视频设为黑白并将 3 个视频(包括预制标题视频)连接起来,但第二个用户视频在输出中没有声音。
这是我最终得到的脚本:
ffmpeg -i uservid1.mov -i uservid2.mp4 -i mask.png -i title1.mp4 -preset
ultrafast -filter_complex "
[2:v][0:v]scale2ref[s1][s2];
[s2][s1]overlay[vid1];
[2:v][1:v]scale2ref[s3][s4];
[s4][s3]overlay[vid2];
[vid1]hue=s=0[v0];
[vid2]hue=s=0[v1];
[v0]scale=720x400[in0];
[v1]scale=720x400[in1];
[3:v]scale=720x400[in3];
[in0]setsar=sar=0[final0];
[in1]setsar=sar=0[final1];
[in3]setsar=sar=0[final3];
[final0][final3][final1]concat=n=3;"
-codec:a copy finalCV.mp4
使用
ffmpeg -i uservid1.mov -i uservid2.mp4 -i mask.png -i title1.mp4 -f lavfi -t 1 -i anullsrc
-filter_complex
"[2:v][0:v]scale2ref[s1][s2];
[s2][s1]overlay,hue=s=0,scale=720x400,setsar=1[v0];
[2:v][1:v]scale2ref[s3][s4];
[s4][s3]overlay,hue=s=0,scale=720x400,setsar=1[v1];
[3:v]scale=720x400,setsar=1[v3];
[v0][0:a][v3][4:a][v1][1:a]concat=n=3:v=1:a=1"
-preset ultrafast finalCV.mp4
音频也需要串联。我假设标题视频没有音频,所以我设置了一个虚拟的无声 1 秒流作为最后一个输入。
大家好,我是初学者,非常感谢您的帮助。
我正在制作一个移动应用程序,它根据用户从他的 phone 中获取的视频生成自定义视频简历,用户必须从移动应用程序将 5 个不同的视频上传到服务器,在服务器中我想:
- 为每个视频添加一个 .png 圆形遮罩。
- 将每个视频设为黑白。
将视频与其他已存在的标题视频连接起来 (例如 [userVideo1] [title1] [userVideo2] [title2]...)Visual Example
[编辑:我想要更多功能]
- 添加背景音乐
- 中间加水印logo
- 从开头和结尾删除无声镜头
- 一些输入视频可能会旋转,如果旋转了,我想将视频旋转回正常。
到目前为止,我设法添加了圆形蒙版,将视频设为黑白并将 3 个视频(包括预制标题视频)连接起来,但第二个用户视频在输出中没有声音。
这是我最终得到的脚本:
ffmpeg -i uservid1.mov -i uservid2.mp4 -i mask.png -i title1.mp4 -preset
ultrafast -filter_complex "
[2:v][0:v]scale2ref[s1][s2];
[s2][s1]overlay[vid1];
[2:v][1:v]scale2ref[s3][s4];
[s4][s3]overlay[vid2];
[vid1]hue=s=0[v0];
[vid2]hue=s=0[v1];
[v0]scale=720x400[in0];
[v1]scale=720x400[in1];
[3:v]scale=720x400[in3];
[in0]setsar=sar=0[final0];
[in1]setsar=sar=0[final1];
[in3]setsar=sar=0[final3];
[final0][final3][final1]concat=n=3;"
-codec:a copy finalCV.mp4
使用
ffmpeg -i uservid1.mov -i uservid2.mp4 -i mask.png -i title1.mp4 -f lavfi -t 1 -i anullsrc
-filter_complex
"[2:v][0:v]scale2ref[s1][s2];
[s2][s1]overlay,hue=s=0,scale=720x400,setsar=1[v0];
[2:v][1:v]scale2ref[s3][s4];
[s4][s3]overlay,hue=s=0,scale=720x400,setsar=1[v1];
[3:v]scale=720x400,setsar=1[v3];
[v0][0:a][v3][4:a][v1][1:a]concat=n=3:v=1:a=1"
-preset ultrafast finalCV.mp4
音频也需要串联。我假设标题视频没有音频,所以我设置了一个虚拟的无声 1 秒流作为最后一个输入。