原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/4153.html
我是在使用迅捷视频工具的时候,因为我知道迅捷是使用FFmpeg进行操作的,所以我也想知道如何操作。
FFmpeg转码、加载字幕等操作分开来操作的话,我都懂得。
但是如果这些功能全部连起来一起操作,命令行要如何写呢?我很好奇,所以折腾了两天,请教了好多大佬。
最后在Telegram上的一个技术交流群中,有两个大佬给出了正确的指点。
一、加载字幕(指定字体 字号大小 文字颜色)
一般来说,FFmpeg加载字幕时使用到了两个滤镜模块,一个是 “subtitles”,另一个是 “drawtext”,在制作视频水印的时候,更多的是使用“drawtext”,而制作srt和ass等字幕文件的时候,我们可以使用 “subtitles”。
D:\ffmpeg\bin\ffmpeg.exe -i 20220518142237.mp4 -vf "subtitles=20220518142237.srt:fontsdir=.:force_style='PrimaryColour=&H2cc1a4,FontName=宋体,FontSize=10',scale=1080:1920" -vcodec libx264 -b:v 20000k -acodec aac -b:a 320k -ar 48000 -ac 2 D:\a\20220518142237.mp4 #注意事项 #运行命令的时候,尽可能用cd切换到该视频、字幕文件、字体文件的目录(三个文件最好放在同一个目录) #20220518142237.mp4 是需要编辑的视频文件 #20220518142237.srt 是需要的字幕文件 如何创建srt字幕文件,请搜索本博客 #fontsdir=. 是字体存放目录 #PrimaryColour=&H2cc1a4 是字体颜色 #FontName=宋体 是字体 #FontSize=10 是文字大小 #scale=1080:1920 同时转码视频像素为1080:1920 #-vcodec libx264 视频转码为H264 #-b:v 20000k 比特率为20000kbps #-acodec aac 音频转码为aac #-b:a 320k 音频比特率转码为320kbps #-ar 48000 音频取样频率为48000hz #-ac 2 双声道
注意事项:命令中的所有符号均为半角符号。
错误提示:Multiple -filter, -af or -vf options specified for stream 0, only the last option ‘-filter:v scale=1080:1920’ will be used.
出现了上述的错误提示的话,是我们命令中写入了多个 -vf -af 参数,也就是说我们提供了两个滤镜。我们可以把subtitles滤镜和scale滤镜放在一条-vf参数里的,用逗号隔开。
subtitles滤镜参数 例:ffmpeg -i "imput.mp4" -lavfi "subtitles=subtitles.srt:force_style='Alignment=0,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize=18,MarginL=5,MarginV=25'" -crf 1 -c:a copy "output.mp4" 01.Name 风格(Style)的名称. 区分大小写. 不能包含逗号. 02.Fontname 使用的字体名称, 区分大小写. 03.Fontsize 字体的字号 04.PrimaryColour 设置主要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 为字幕填充颜色 05.SecondaryColour 设置次要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 在卡拉OK效果中由次要颜色变为主要颜色. 06.OutlineColour 设置轮廓颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 07.BackColour 设置阴影颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. ASS的这些字段还包含了alpha通道信息. (AABBGGRR), 注ASS的颜色代码要在前面加上&H 08.Bold -1为粗体, 0为常规 09.Italic -1为斜体, 0为常规 10.Underline [-1 或者 0] 下划线 11.Strikeout [-1 或者 0] 中划线/删除线 12.ScaleX 修改文字的宽度. 为百分数 13.ScaleY 修改文字的高度. 为百分数 14.Spacing 文字间的额外间隙. 为像素数 15.Angle 按Z轴进行旋转的度数, 原点由alignment进行了定义. 可以为小数 16.BorderStyle 1=边框+阴影, 3=纯色背景. 当值为3时, 文字下方为轮廓颜色的背景, 最下方为阴影颜色背景. 17.Outline 当BorderStyle为1时, 该值定义文字轮廓宽度, 为像素数, 常见有0, 1, 2, 3, 4. 18.Shadow 当BorderStyle为1时, 该值定义阴影的深度, 为像素数, 常见有0, 1, 2, 3, 4. 19.Alignment 定义字幕的位置. 字幕在下方时, 1=左对齐, 2=居中, 3=右对齐. 1, 2, 3加上4后字幕出现在屏幕上方. 1, 2, 3加上8后字幕出现在屏幕中间. 例: 11=屏幕中间右对齐. Alignment对于ASS字幕而言, 字幕的位置与小键盘数字对应的位置相同. 20.MarginL 字幕可出现区域与左边缘的距离, 为像素数 21.MarginR 字幕可出现区域与右边缘的距离, 为像素数 22.MarginV 垂直距离
二、SecondaryColour参数
在我测试的时候,在命令中添加了SecondaryColour参数,但是并没有起作用,字幕并没有像卡拉OK中的字幕一样出现变化,用Telegram上大佬说的,这个参数需要有两行字幕在同一个位置才会发生变化,我没有试过,有懂的朋友也请指点一下。
相关链接:https://www.myzhenai.com.cn/post/3634.html
sicnature ---------------------------------------------------------------------
Your current IP address is: 44.192.65.228
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 ---------------------------------------------------------------------
2条评论
设置水印每隔10秒钟从左移动右直至消失
ffmpeg -i big_buck_bunny.mp4 -ignore_loop 0 -i doggie3.gif -lavfi “overlay=enable=’mod(t,10)’:x=’100*mod(t,10)-w'” -shortest out.mp4 -y
一键批量加水印,
https://blog.csdn.net/qq_33474442/article/details/87871737
提取视频截图水印坐标的工具
https://github.com/CloudTranscoding/ffmpeg-watermark-position-extraction-tools
subtitles 滤镜的详细用法:
http://ffmpeg.org/ffmpeg-all.html#subtitles-1
给视频添加封面
ffmpeg -i in.mp4 -i IMAGE -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4
同时添加图片水印和文字水印
ffmpeg -re -i input.mp4 -ignore_loop 0 -i 1.gif -filter_complex “overlay=5:H-h-5[file1];[file1]drawtext=text=’Text Content’:fontsize=80:box=1:x=1000:y=1800” -shortest -c:v libx264 -c:a aac -b:a 192k -strict -2 -y output.mp4
ffmpeg -i in.mp4 -filter_complex “scale=-2:720,pad=1280:720:280:0:red” -y out.mp4
ffmpeg -i in.mp4 -vf “scale=-2:720,pad=1280:720:280:0:red” -y out.mp4
视频旋转