ffmpeg 学习命令总结

1. 视频中插入LOGO

ffmpeg -i zhengzhou.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=50:50" -codec:a copy zhengzhou-output1.mp4

2. 去除视频声音

ffmpeg -i input_video.mp4 -vcodec copy -an output_video_no_audio.mp4
  • -i input_video.mp4 指定输入文件。

  • -vcodec copy 复制视频流,不重编解码。

  • -an 表示无音频。

  • output_video_no_audio.mp4 是输出文件的名称。

3. 视频添加字幕

ffmpeg -i zhengzhou-output2.mp4 -vf "subtitles=zhengzhou-yixiang.srt:force_style='Fontsize=14,PrimaryColour=&H00FFFFFF,OutlineColour=&H66000000,BorderStyle=3,MarginV=10'" -c:a copy zhengzhou-output3.mp4

subtitles:字幕文件

Fontsize:字幕大小

PrimaryColour:字幕颜色

MarginV:具体屏幕下方距离

生成字幕文件网址:TXT to SRT Converter

4. 视频添加旁白(声音)

ffmpeg -i input_video.mp4 -i input_audio.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=3 output_video.mp4

5. 视频插入文字

ffmpeg -i zhengzhou-output3.mp4 -vf "drawtext=text='4月9日采购意向(郑州市) ': fontfile=simhei.ttf: fontsize=60:fontcolor=#FFE14D:line_spacing=10: x=(w-tw)/2: y=130:shadowcolor=red:shadowx=2:shadowy=2:box=1:boxcolor=black@0.5" output.mp4

ffmpeg 的 drawtext 滤镜用于在视频帧上绘制文本,支持多种参数来定制文本的样式、位置、动态效果等。以下是一些常见的 drawtext 参数(选项)及其说明:

基本参数:

  • text: 必须。要绘制的文本内容。可以包含特殊字符和转义序列,如换行符 \n

  • fontfile: 字体文件的路径。如果要使用非系统默认字体,需要指定此选项。

  • font: 字体名称。使用系统内建字体时,直接指定字体名称。可以包含样式信息,如 Arial Bold

  • fontsize: 字体大小(单位:像素)。

  • fontcolor: 字体颜色。可以使用 0xRRGGBBrgb(R,G,B)rgba(R,G,B,A)hexcolor[0-100%]gray 或颜色名称(如 red)。

  • shadowcolor: 文本阴影的颜色。设置方式同 fontcolor

  • shadowxshadowy: 文本阴影相对于文本的横向和纵向偏移量(单位:像素)。

  • xy: 文本在视频帧上的起始位置。可以使用绝对像素值,也可以使用相对表达式(如 w/2 表示视频宽度的一半)。

文本样式:

  • text_shaping: 开启(1)或关闭(0)文本形状优化,适用于阿拉伯语、希伯来语等从右向左书写系统的语言。

  • bordercolorborderw: 边框颜色和宽度(单位:像素)。为文本添加边框。

  • boxcolorbox: 绘制背景矩形的颜色和是否开启(1)背景矩形。当开启时,可以配合 boxborderw(边框宽度)和 boxpadding(内部填充)使用。

  • alpha: 文本的透明度(0.0 - 1.0)。

  • shadowopacity: 文本阴影的透明度(0.0 - 1.0)。

动态效果:

  • timecode: 使用时间码作为文本内容。可以指定格式,如 %{pts} 或 %{localtime}

  • rate: 文本更新速率(帧率)。默认为视频帧率。

  • fixed_linesize: 固定行高,使多行文本保持一致的高度。

  • reload: 是否实时重载文本文件(当 textfile 参数用于指定文本文件时)。

高级选项:

  • expansion: 控制字符串的扩展方式,如 nonestrftime(时间戳格式化)或 normal(默认,支持简单变量替换)。

  • textfile: 从文件中读取文本内容。支持按行读取,每行对应视频帧中的一个文本实例。

  • eof_action: 当文本文件读取到末尾时的行为,如 endall(停止播放)、repeat(从头开始循环读取)或 pause(暂停播放)。

  • text_length: 文本的最大长度。超过此长度的文本将被截断。

  • tabsize: 制表符宽度(单位:像素)。

  • wrapwidth: 自动换行的宽度限制(单位:像素)。超出此宽度的文本将被折行。

  • line_spacing: 行间距(单位:像素)。

  • kerningletterspacing: 字间距调整(单位:像素)。

  • fontconfig_match: 使用 fontconfig 库进行字体匹配。对于复杂的字体配置,可以提高匹配准确度。

  • ass: 将 drawtext 参数解析为 ASS 字幕格式,支持更丰富的文本样式和动画效果。

表达式与函数:

许多参数(如 xyfontsize 等)支持使用数学表达式,可以包含以下函数:

  • rand(min,max): 返回指定范围内的随机数。

  • gte(a,b): 检查 a 是否大于等于 b,返回 1(真)或 0(假)。

  • lte(a,b): 检查 a 是否小于等于 b,返回 1(真)或 0(假)。

  • eq(a,b): 检查 a 是否等于 b,返回 1(真)或 0(假)。

  • if cond val_true val_false: 根据条件 cond 返回 val_true 或 val_false

  • between(val,min,max): 检查 val 是否在 min 和 max 之间(包含边界),返回 1(真)或 0(假)。

  • isnan(val): 检查 val 是否为 NaN(Not-a-Number),返回 1(真)或 0(假)。

  • isinf(val): 检查 val 是否为无穷大或无穷小,返回 1(真)或 0(假)。

  • isnan_or_inf(val): 检查 val 是否为 NaN 或无穷大/小,返回 1(真)或 0(假)。

  • max(a,b,...)min(a,b,...): 返回一组数值中的最大值或最小值。

  • hypot(a,b): 计算直角三角形两条边长 a 和 b 的斜边长度。

  • round(val): 将 val 四舍五入到最接近的整数。

  • trunc(val): 截断 val 到整数部分,去掉小数点后的部分。

  • ceil(val): 向上取整,将 val 转换为大于或等于它的最小整数。

  • floor(val): 向下取整,将 val 转换为小于或等于它的最大整数。

  • rint(val): 朝最接近的整数取整,遵循 IEEE 754 规范。

  • sqrt(val): 计算 val 的平方根。

  • log(val[,base]): 计算 val 的自然对数(默认)或以 base 为底的对数。

  • exp(val): 计算 e(自然对数的底数)的 val 次幂。

6. 合并多个视频

ffmpeg  -i luoyang_output5.mp4 -i zhengzhou-output_video5.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" "output.mp4"
  • -i input1.mp4 是输入文件的引用,可以重复多次来包含所有要合并的视频。

  • -filter_complex 是用来指定复杂的视频和音频过滤操作的。

  • [0:v][0:a] 表示第一个输入文件的视频和音频流。

  • concat=n=4:v=1:a=1 是 concat 过滤器的参数,表示有四个输入(n=4,输出一个视频流(v=1)和一个音频流(a=1)。

  • [v][a] 是为输出视频和音频流指定的别名。

  • -map "[v]" 和 -map "[a]" 用来指定输出的视频和音频流。

7. 获取视频尺寸

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 zhengzhou-output_video4.mp4

8. 视频尺寸修改

ffmpeg -i input.mp4 -vf "scale=1280:0" output.mp4

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值