完整的 FFmpeg 命令使用教程

FFmpeg 是一个开源的跨平台音视频处理工具,它能够处理几乎所有的视频、音频格式,并提供了强大的功能如格式转换、视频剪辑、合并、提取音频等。FFmpeg 通过命令行界面(CLI)操作,尽管有一些图形界面的前端工具,但直接使用 FFmpeg 命令是最为高效和灵活的方式。

本文将为你提供 FFmpeg 的基本命令使用示例、常见操作以及一些高级技巧,帮助你掌握这一工具。

安装 FFmpeg

在使用 FFmpeg 前,你需要先安装它。

在 Windows 上安装

  1. 访问 FFmpeg 的官网:FFmpeg 官网
  2. 下载适合你操作系统的压缩包。
  3. 解压文件,并将解压后的文件夹路径添加到系统的环境变量中。
  4. 打开命令提示符,输入 ffmpeg,如果显示 FFmpeg 的版本信息,说明安装成功。

在 macOS 上安装

可以通过 Homebrew 安装:

brew install ffmpeg

在 Linux 上安装

大部分 Linux 发行版都可以通过包管理器安装:

sudo apt update
sudo apt install ffmpeg  # Ubuntu/Debian 系列
sudo yum install ffmpeg  # CentOS/RHEL 系列

FFmpeg 基本命令格式

FFmpeg 的基本命令格式如下:

ffmpeg -i input_file options output_file
  • -i input_file: 输入文件路径。
  • options: 可选的处理参数,如视频格式、分辨率、比特率等。
  • output_file: 输出文件路径和格式。

接下来,我们将介绍一些常见的 FFmpeg 操作。

1. 转换视频格式

FFmpeg 可以轻松地将视频从一种格式转换为另一种格式。

例如,转换一个 .avi 文件为 .mp4 文件:

ffmpeg -i input.avi output.mp4

FFmpeg 会自动识别输入文件的格式,并转换为目标格式。在大多数情况下,你只需要提供输入和输出文件的路径及扩展名即可,FFmpeg 会根据文件扩展名自动选择合适的编码器。

设置视频编码和音频编码

你也可以手动指定编码器。例如,将视频转换为 .mp4 格式时使用 H.264 编码器,音频使用 AAC 编码器:

ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
  • -c:v libx264: 使用 H.264 视频编码器。
  • -c:a aac: 使用 AAC 音频编码器。

2. 提取音频

你可以从视频中提取音频,并保存为一个音频文件。例如,从 .mp4 文件中提取音频并保存为 .mp3 格式:

ffmpeg -i input.mp4 -vn -acodec mp3 output.mp3
  • -vn: 禁用视频流,只提取音频。
  • -acodec mp3: 设置音频编码格式为 MP3。

如果你不指定音频编码器,FFmpeg 会自动选择默认编码器,但你可以手动指定编码器来满足不同需求。

3. 压缩视频文件

通过调整视频和音频编码器的参数,你可以大大减小视频文件的大小。以下是一个简单的压缩视频的例子,将一个 .avi 文件压缩为 .mp4 文件:

ffmpeg -i input.avi -vcodec libx264 -crf 28 -acodec aac output.mp4
  • -vcodec libx264: 使用 H.264 编码器。
  • -crf 28: CRF(常量速率因子)是影响视频质量和文件大小的参数,值越高视频质量越低,文件大小越小。通常 CRF 值在 18 到 28 之间选择。
  • -acodec aac: 使用 AAC 编码器压缩音频。

CRF 的值通常建议在 18 到 28 之间。18 代表高质量,28 代表较低质量,但文件更小。

4. 裁剪视频

FFmpeg 也允许你裁剪视频。例如,从视频中提取从 00:01:30 到 00:05:00 之间的视频片段:

ffmpeg -i input.mp4 -ss 00:01:30 -to 00:05:00 -c:v libx264 -c:a aac output.mp4
  • -ss 00:01:30: 从 00:01:30 开始。
  • -to 00:05:00: 在 00:05:00 结束。

如果你想要更精确的裁剪,可以将 -ss 参数放在输入文件之前,以确保准确定位到视频的起始时间。

5. 合并视频文件

如果你有多个视频文件,并且希望将它们合并为一个文件,可以使用以下命令。注意:合并的视频文件必须具有相同的编码格式、分辨率和帧率等参数。

通过文件列表合并

首先创建一个文件列表 filelist.txt,格式如下:

file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'

然后执行合并命令:

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
  • -f concat: 指定合并模式为 concat
  • -safe 0: 允许使用相对路径。
  • -c copy: 复制输入流,不进行转码。

6. 改变视频分辨率

你可以使用 FFmpeg 改变视频的分辨率。例如,将视频的分辨率改为 1280x720:

ffmpeg -i input.mp4 -s 1280x720 -c:v libx264 -c:a aac output.mp4
  • -s 1280x720: 设置视频分辨率为 1280x720。

7. 添加水印到视频

添加水印是 FFmpeg 中常见的操作,下面是一个简单的例子:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" -c:a copy output.mp4
  • -i watermark.png: 输入水印图片文件。
  • -filter_complex "overlay=10:10": 使用 overlay 滤镜将水印叠加到视频的左上角(偏移量为 10, 10)。
  • -c:a copy: 音频不进行转码,直接复制。

8. 调整音量

FFmpeg 允许你调整音频的音量。例如,将音量增加两倍:

ffmpeg -i input.mp4 -filter:a "volume=2" -c:v copy output.mp4
  • -filter:a "volume=2": 设置音量为原始音量的两倍。

9. 生成 GIF 动画

将视频转换为 GIF 是 FFmpeg 的另一常见用途。例如,从视频中提取 5 秒钟并生成一个 GIF:

ffmpeg -i input.mp4 -ss 00:00:05 -t 00:00:05 output.gif
  • -ss 00:00:05: 从视频的第 5 秒开始提取。
  • -t 00:00:05: 提取持续 5 秒的视频片段。

使用帧率控制 GIF 大小

生成 GIF 时可以控制帧率来调整文件大小和质量:

ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif
  • fps=10: 设置帧率为 10。
  • scale=320:-1: 将视频宽度调整为 320,保持纵横比。

10. 截图

FFmpeg 也可以从视频中截取单帧图像:

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.png
  • -ss 00:00:10: 跳到视频的第 10 秒。
  • -vframes 1: 只提取一帧图像。

结语

FFmpeg 是一个非常强大的工具,它支持几乎所有的音视频处理功能。无论你是进行格式转换、剪辑视频、提取音频,还是做视频合并、添加水印等,FFmpeg 都能满足你的需求。希望本文的介绍能够帮助你入门并掌握 FFmpeg 的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mono里运行C#脚本5—mono_file_map_open

前面介绍了mono_jit_init初始化,这个函数非常长,要理解起来还是比较困难。因此改变另外一种方式,先从底层的函数开始,再慢慢来探索mono的底层实现,以及它的实现原理,运行的细节。 Mono要运行exe文件,这里是运行test-embed.exe文件,那么就得认识这个文件,解释这个文件的…

【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存

问题描述 从DBeaver中导出了部分业务数据的 insert sql,明明在开发、测试环境都可以一把执行通过,却在预发环境执行前的语法检查失败了,提示有SQL语法错误。 这条SQL长这样,default_sql是要在odps上执行的sql语句,提…

matlab中的cell

在MATLAB中,cell 是一种非常重要的数据类型,它能够存储不同类型和大小的数据,这使得它非常灵活,适用于处理复杂的数据结构。 1. 基本介绍 cell 类型的变量可以存储不同类型的数据,如数值、字符、结构体、甚至其他的 …

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞!!! 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探:鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…

Excel中一次查询返回多列

使用Excel或wps的时候,有时候需要一次查询返回多列内容,这种情况可以选择多次vlookup或者多次xlookup,但是这种做法费时费力不说,效率还有些低下,特别是要查询的列数过多时。我放了3种查询方法,效果图&…

网络基础入门到深入(2):网络协议-TCP/IP协议栈

目录 一.TCP/IP协议栈的四层结构 二.每一层的作用与协议 1.作用层 作用: 常见协议: 示例: 2.传输层 作用: 核心功能: 3.网络层 作用: 核心功能: 常见协议: 示例: 4.数据链路层(物理层) 作用: 核心功能: 常见技术: 示例: 三.TCP/IP协议栈的分层…

C语言 练习

1.按顺序打印三个数 //按大小顺序打印三个数字 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp; } int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);if (a < b){Swap(&a,&b);}if (a < c){Swap(&am…

爱思唯尔word模板

爱思唯尔word模板 有时候并不一定非得latex https://download.csdn.net/download/qq_38998213/90199214 参考文献书签链接

flask后端开发(3):html模板渲染

目录 渲染模板html模板获取路由参数 gitcode地址&#xff1a; https://gitcode.com/qq_43920838/flask_project.git 渲染模板 这样就能够通过html文件来渲染前端&#xff0c;而不是通过return了 html模板获取路由参数

Spring发布-订阅模式:解耦与异步通信的高效实现

文章目录 前言一、发布订阅模式的基本概念二、发布订阅模式的实现1、定义事件2、发布事件3、订阅事件3.1、ApplicationListener接口3.2、EventListener注解3.3、事件源Object source的作用 三、开发应用场景1、社交网络平台2、电商系统3、金融交易系统 总结 前言 Spring框架通过…

配置hive支持中文注释

hive元数据metastore默认的字符集是latin1&#xff0c;所以中文注释会乱码。但是不能将metastore库的字符集更改为utf-8&#xff0c;只能对特定表、特定列修改为utf-8。配置hive支持中文注释&#xff0c;主要在两个方面&#xff1a; 1、在Hive元数据存储的Mysql数据库中&#…

python实战案例笔记:统计出数据中路劲下没有文件的文件夹

数据样例&#xff1a;&#x1f447;有如下excel数据 需求&#xff1a;有如下excel&#xff0c;a.xls&#xff0c;统计出路劲下没有文件的路劲 详细实现代码&#xff1a; import os from openpyxl import Workbook from datetime import datetimedef get_empty_dirs(paths):# …

docker使用国内镜像

可用地址 https://docker.m.daocloud.io https://docker.rainbond.cc https://docker.1ms.run方法1:配置(需要重启docker) sudo vim /etc/docker/daemon.json # 在registry-mirrors中添加地址(没有的就直接创建了) #比如 {"registry-mirrors": ["https://dock…

机械臂的各种标定

文章目录 1. 工具坐标系标定2. 工具手标定3. 手眼标定联系 在工程中&#xff0c;同时使用工具坐标系标定、工具手标定和手眼标定的概念、目的和作用如下&#xff1a; 1. 工具坐标系标定 概念&#xff1a; 工具坐标系标定是指确定工具相对于机器人坐标系的位置和姿态关系的过程…

Oracle Managed Files(OMF)

Oracle Managed Files 是指&#xff1a; 在创建表空间文件等文件时&#xff0c;可以不必指定文件路径&#xff0c;由Oracle自动在某个目录下创建&#xff0c;文件名也是Oracle自动命名。 那这个OMF怎么使能呢&#xff1f; 其实是靠设置一些参数&#xff0c;指定要存储的目录…

GXUOJ-算法-第一次作业(整数划分、汉诺塔、排列问题、数塔问题)

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…

新服务器ubuntu系统相关操作

1、查看驱动:驱动版本535.216.01能够支持cuda12.2,下面直接使用默认安装的cuda。 2、赋予用户管理员权限。 首先有超级用户(root)权限来编辑 /etc/sudoers 文件,visudo 是一个命令,用于安全地编辑 /etc/sudoers 文件。运行: sudo visudo 在 visudo 编辑器中,找到类似…

【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别

su 命令 su (Switch User 切换用户)&#xff0c;允许用户切换到另一个用户的身份&#xff0c;默认情况下是切换到 root 用户。 默认行为&#xff1a;如果只运行 su&#xff0c;则系统会要求输入 root 用户的密码来切换到 root 用户&#xff0c;获取管理员权限。 切换到其他用…

docker-开源nocodb,使用已有数据库

使用已有数据库 创建本地数据库 数据库&#xff1a;nocodb 用户&#xff1a;nocodb 密码&#xff1a;xxxxxx修改docker-compose.yml 默认网关的 IP 地址是 172.17.0.1&#xff08;适用于 bridge 网络模式&#xff09;version: "2.1" services:nocodb:environment:…

near-synonym反义词生成(2):Prompt +Bert-MLM(FT)

near-synonym之反义词生成方法二 near-synonym, 中文反义词/近义词/同义词(antonym/synonym)工具包. 方法一为(neg_antonym): Word2vec -> ANN -> NLI -> Length 方法二为(mlm_antonym): Prompt Bert-MLM(FT) Beam-Search 项目地址 github: https://github.com/yon…