ffmpeg给视频底部添加黑色遮罩色块

2022年09月23日

这个问题是微信名叫永浩的网友联系到我这边询问的,他的要求是在不改变视频像素的情况下给视频底部添加一块黑色的遮罩色块,我在ffmpeg下使用了好几个滤镜进行调试,但发现都很难实现这种效果,最后还是永浩朋友自己用一个滤镜实现的,以下图片是实现后的效果。

D:\ffmpeg\bin\ffmpeg.exe -i ac.mp4 -vf drawbox=x=0:y=898:w=in_w:h=250:color=black:t=fill D:\abc.mp4
#D:\ffmpeg\bin\ffmpeg.exe 打开ffmpeg
#-i ac.mp4 输入需要操作的视频
#-vf 添加滤镜命令
#drawbox 滤镜名称
#x 这个参数应该是某个像素位置
#y 这个参数应该是某个像素位置
#w=in_w 其中的w应该是某个像素的位置,in_w这个应该是ffmpeg的宽度的变量。
#h 这个应该是指在视频高度的某个位置进行操作
#color 这个是颜色,其中black是指黑色
#t=fill 这个参数t,应该是有些变量的,这里的fill是指填充,不加这一个参数,命令只是在视频底部画了一个黑色的边框。
#输出后的文件名

本来我是想用pad滤镜进行操作的,但是我发现pad滤镜会在视频的四周都加上黑色边框,根本不是我们需要的效果,以下是原图片。

我使用的视频的像素是544×960,原文件大小42.9mb,使用了drawbox滤镜成功实现功能后,文件的像素没有改变,只是文件体积的大小改变了,为42.7mb。以下也贴出来我这些天调试的过程和心得。

我分别调试过filter_complex,fillborders,pad,subtitles几个滤镜,但是我发现,在使用subtitles滤镜的时候,也可以跟随着字幕添加黑色遮罩,但问题是黑色背景会随着字幕的长短而变动,这也不是我们想达到的效果。

D:\ffmpeg\bin\ffmpeg.exe -i ac.mp4 -filter:v "crop=in_w:in_h-60:0:30,pad=in_w:in_h+60:0:-30" D:\abc.mp4
#D:\ffmpeg\bin\ffmpeg.exe 打开ffmpeg
#-i ac.mp4 输入需要操作的文件
#-filter:v 打开模块命令
#crop=in_w:in_h-60:0:30 切割滤镜,in_w应该是视频宽度的变量,in_h是视频高度的变量,其中的0应该是某个位置,30可以理解成需要设置黑色遮罩的高度。
#pad=in_w:in_h+60:0:-30 填实边框滤镜,同上,in_w是视频的宽度变量,in_h是视频高度变量,0应该是某个位置,30可以理解成需要设置黑色遮罩的高度。
#有一点需要记住,如果在ffmpeg里同时用到两个或两个以上的滤镜的话,必须要用“”半角状态下的双引号将其中的命令引用起来,同时使用半角状态下的,逗号隔开。

以下图片的效果就是我同时使用crop和pad两个滤镜实现的效果。

以下的命令是我在调试的时候用过的一些合令,在这里也备份一下。

D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -vf "subtitles=1577276461285.srt:fontsdir=.:force_style='PrimaryColour=&H000000,OutlineColour=&H000000,BackColour=&H000000,BorderStyle=3,Outline=0,Shadow=0,FontName=宋体,FontSize=16',scale=1080:1920" -vcodec libx264 -b:v 20000k -acodec aac -b:a 320k -ar 48000 -ac 2 D:\a\1577276461285.mp4


D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -vf "subtitles=1577276461285.srt:fontsdir=.:force_style='BorderStyle=3,Outline=1,Shadow=1,FontName=宋体,FontSize=16,OutlineColour=&H000000,BackColour=&H000000',scale=1080:1920" -vcodec libx264 -b:v 20000k -acodec aac -b:a 320k -ar 48000 -ac 2 D:\a\1577276461285.mp4

D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -vf "scale=1080:1920,pad=1080:1900:-1:0:black" -vcodec libx264 -b:v 20000k -acodec aac -b:a 320k -ar 48000 -ac 2 D:\a15.mp4
D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -filter:v "crop=in_w:in_h-60:0:30,pad=in_w:in_h+60:0:-30" D:\a1577276461285.mp4
D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -filter:v "crop=in_w:in_h-60:0,pad=in_w:in_h+60:0:-30" D:\a1577276461285.mp4
D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -filter_complex "color=black:s=30x60" D:\a1577276461285.mp4
D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -vf "fillborders=200:400:30:mode=fixed:color=black" D:\a1577276461285.mp4
D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -vf "fillborders=0:0:0:30:mode=fixed:color=black" D:\a1577276461285.mp4
D:\ffmpeg\bin\ffmpeg.exe -i 1577276461285.mp4 -vf "[in]split[blurin][originalin] [blurin]crop=60:30:in_w-70:10,boxblur=5:5[blurout];[originalin][blurout]overlay=x=main_w-70:y=10[out]" -y D:\a15.mp4
D:\ffmpeg\bin\ffmpeg.exe -i ac.mp4 -vf pad=544:960:500:50:black D:\abc.mp4
D:\ffmpeg\bin\ffmpeg.exe -i ac.mp4 -vf "fillborders=200:400:30:mode=fixed:color=black" D:\abc.mp4

 


sicnature ---------------------------------------------------------------------
Your current IP address is: 184.72.135.210
Your IP address location: 美国弗吉尼亚阿什本
Your IP address country and region: 美国 美国
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://myzhenai.com/post/4216.html

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注