当前位置: 首页 > news >正文

完整的 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 的使用。

相关文章:

完整的 FFmpeg 命令使用教程

FFmpeg 是一个开源的跨平台音视频处理工具,它能够处理几乎所有的视频、音频格式,并提供了强大的功能如格式转换、视频剪辑、合并、提取音频等。FFmpeg 通过命令行界面(CLI)操作,尽管有一些图形界面的前端工具&#xff…...

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 地址(这个我不需…...

有没有免费提取音频的软件?音频编辑软件介绍!

出于工作和生活娱乐等原因,有时候我们需要把音频单独提取出来(比如歌曲伴奏、人声清唱等、乐器独奏等)。要提取音频必须借助音频处理软件,那么有没有免费提取音频的软件呢?下面我们将为大家介绍几款免费软件&#xff0…...

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&#xff08…...

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…...

微信小程序开发示例

微信小程序开发涉及多个方面&#xff0c;包括页面布局、交互逻辑、数据处理等。以下是一个简单的微信小程序开发示例&#xff0c;包括页面布局、样式定义、交互逻辑等方面的内容。 一、页面布局&#xff08;WXML&#xff09; <!-- index.wxml --> <view class"…...

【机器学习】概述

文章目录 1. 机器学习三步骤2. 机器学习图谱2.1 任务类型 (Task)2.2 模型选择 (Methods)2.3 学习场景 (Scenario) 1. 机器学习三步骤 定义一个模型 (Define a set of function) 选择一组合适的函数来表示模型。 评估模型好坏 (Goodness of function) 找到一个损失函数&#xf…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...