完整的 FFmpeg 命令使用教程
FFmpeg 是一个开源的跨平台音视频处理工具,它能够处理几乎所有的视频、音频格式,并提供了强大的功能如格式转换、视频剪辑、合并、提取音频等。FFmpeg 通过命令行界面(CLI)操作,尽管有一些图形界面的前端工具,但直接使用 FFmpeg 命令是最为高效和灵活的方式。
本文将为你提供 FFmpeg 的基本命令使用示例、常见操作以及一些高级技巧,帮助你掌握这一工具。
安装 FFmpeg
在使用 FFmpeg 前,你需要先安装它。
在 Windows 上安装
- 访问 FFmpeg 的官网:FFmpeg 官网
- 下载适合你操作系统的压缩包。
- 解压文件,并将解压后的文件夹路径添加到系统的环境变量中。
- 打开命令提示符,输入
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 的使用。
相关文章:
完整的 FFmpeg 命令使用教程
FFmpeg 是一个开源的跨平台音视频处理工具,它能够处理几乎所有的视频、音频格式,并提供了强大的功能如格式转换、视频剪辑、合并、提取音频等。FFmpeg 通过命令行界面(CLI)操作,尽管有一些图形界面的前端工具ÿ…...
Leetcode 3405. Count the Number of Arrays with K Matching Adjacent Elements
Leetcode 3405. Count the Number of Arrays with K Matching Adjacent Elements 1. 解题思路2. 代码实现 题目链接:3405. Count the Number of Arrays with K Matching Adjacent Elements 1. 解题思路 这一题虽然是一道hard的题目,但是委实是有点名不…...
Springboot(五十六)SpringBoot3集成SkyWalking
这里我们将skywalking集成到Springboot中。 关于docker部署skyWalking的相关问题,请移步《docker(二十八)docker-compose部署链路追踪SkyWalking》 一:下载java-agents 先放一下skyWalking的官网下载地址 Downloads | Apache SkyWalking 其他的版本的 APM 地址(这个我不需…...
有没有免费提取音频的软件?音频编辑软件介绍!
出于工作和生活娱乐等原因,有时候我们需要把音频单独提取出来(比如歌曲伴奏、人声清唱等、乐器独奏等)。要提取音频必须借助音频处理软件,那么有没有免费提取音频的软件呢?下面我们将为大家介绍几款免费软件࿰…...
Linux 中查看内存使用情况全攻略
Linux 中查看内存使用情况全攻略 在 Linux 系统运维与开发工作里,精准掌握内存使用状况对系统性能优化、故障排查起着举足轻重的作用。Linux 提供了多款实用工具来查看内存详情,下面我们就结合实际示例,深入了解这些工具的使用方法。 一、fr…...
【SQL Server】教材数据库(3)
接着教材数据库(1)的内容,完成下列查询。 1 查询订购高等教育出版社教材的学生姓名 2 查询比所有高等教育出版社的图书都贵的图书信息 3 列出每位学生姓名、订购教材书名、价格。 1、嵌套查询:use jiaocai select student.nam…...
使用 ECharts 与 Vue 构建数据可视化组件
在前端开发中,数据可视化是非常重要的一部分。ECharts 作为一个功能强大且易于使用的开源数据可视化库,被广泛应用于各种图表展示需求中。而 Vue.js 是当下流行的前端框架之一,它的数据驱动和组件化开发模式让我们能轻松地将 ECharts 集成到 …...
Yocto 项目 - 共享状态缓存 (Shared State Cache) 机制
引言 在嵌入式开发中,构建效率直接影响项目的开发进度和质量。Yocto 项目通过其核心工具 BitBake 提供了灵活而强大的构建能力。然而,OpenEmbedded 构建系统的传统设计是从头开始构建所有内容(Build from Scratch),这…...
Unity3D仿星露谷物语开发9之创建农场Scene
1、目标 绘制农场的场景。通过不同Sorting Layer控制物体的显示优先级,绘制Tilemap地图,添加Tilemap Collider碰撞器,同时添加Composite Collider碰撞器优化性能。 ps:绘制Tilemap的技巧:通过"Shift [" 可…...
STM32-笔记20-测量按键按下时间
1、按键按下的时间-思路 我们先检测下降沿信号,检测到以后,在回调函数里切换成检测上升沿信号,当两个信号都检测到的时候,这段时间就是按键按下的时间,如图所示:>N*(ARR1)CCRx的值 N是在这段时间内&…...
2024年12月30日Github流行趋势
项目名称:free-programming-books 项目地址url:https://github.com/EbookFoundation/free-programming-books项目语言:HTML历史star数:343,398今日star数:246项目维护者:vhf, eshellman, davorpa, MHM5000,…...
SAP PP bom历史导出 ALV 及XLSX 带ECN号
bom总数 104W PS超过XLSX上限 ,那就分文件 *&---------------------------------------------------------------------* *& Report ZRPT_PP_BOM_HIS_ECN *&---------------------------------------------------------------------* *& tcode:zpp0…...
使用WebRTC进行视频通信
一、WebRTC技术简介 什么是WebRTC? 是一种支持浏览器之间实时音频、视频和数据传输的开放源代码项目。它允许开发者在不需要任何第三方插件或软件的情况下实现点对点的实时通信。WebRTC已经成为现代Web应用中的关键技术,为开发者提供了强大的工具和API…...
npm ERR! ECONNRESET 解决方法
问题:npm 命令遇到的错误是 ECONNRESET,这通常与网络连接问题相关。设置代理解决问题。 一、查看当前代理设置 npm config get proxy npm config get https-proxy二、设置代理 npm config set proxy http://your-proxy-address:port npm config set h…...
【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning
1 介绍 年份:2021 期刊: 2021CPVR Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853. 本文提出的SS-IL(…...
Go+chromedp实现Web UI自动化测试
1.为什么使用go进行UI自动化测试? 速度:Go速度很快,这在运行包含数百个UI测试的测试套件时是一个巨大的优势 并发性:可以利用Go的内置并发性(goroutines)来并行化测试执行 简单:Go的简约语法允许您编写可读且可维护…...
【MySQL 高级特性与性能优化】
MySQL 高级特性与性能优化 一、MySQL 存储引擎 (一)InnoDB 存储引擎 1. 特点 支持事务:InnoDB 是 MySQL 中提供完整 ACID 事务支持的存储引擎,这意味着它能够保证数据库操作在复杂的并发环境下的一致性、隔离性、原子性和持久…...
Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化
如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…...
微信小程序开发示例
微信小程序开发涉及多个方面,包括页面布局、交互逻辑、数据处理等。以下是一个简单的微信小程序开发示例,包括页面布局、样式定义、交互逻辑等方面的内容。 一、页面布局(WXML) <!-- index.wxml --> <view class"…...
【机器学习】概述
文章目录 1. 机器学习三步骤2. 机器学习图谱2.1 任务类型 (Task)2.2 模型选择 (Methods)2.3 学习场景 (Scenario) 1. 机器学习三步骤 定义一个模型 (Define a set of function) 选择一组合适的函数来表示模型。 评估模型好坏 (Goodness of function) 找到一个损失函数…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...
