Linux ffmpeg 基础用法
简介
FFmpeg 是一个强大的开源多媒体框架,用于处理视频、音频和其他多媒体文件和流。它允许转换、录制、编辑、流媒体等等。
安装
Debian/Ubuntu
sudo apt update
sudo apt install ffmpeg
Red Hat/CentOS
sudo dnf install ffmpeg
macOS (via Homebrew)
brew install ffmpeg
- 从源码构建
# Install dependencies
sudo apt update
sudo apt install -y build-essential yasm pkg-config libx264-dev libx265-dev libvpx-dev# Clone FFmpeg repo and compile
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure
make
sudo make install
常用选项
-
-i:指定输入文件 -
-f:指定输出的格式 -
-c:v:指定视频编解码器 -
-c:a:指定音频编解码器 -
-b:v:指定视频比特率 -
-b:a:指定音频比特率 -
-t:持续时间 (hh:mm:ss) -
-ss:开始时间 -
-vn:禁用视频流 -
-an:禁用音频流 -
-map:选择指定的流 -
-y:无需询问即可覆盖输出文件
示例用法
查看 ffmpeg 版本
ffmpeg -version
转换视频格式
要将视频从一种格式转换为另一种格式(例如,将
.avi转换为.mp4)
ffmpeg -i input.avi output.mp4
从视频中提取音频
提取音频并保存为
mp3格式
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
-
-q:a 0:设置音频质量(0 为最佳) -
-map a:选择音频流
转换音频格式
要转换音频文件(例如,将
.wav转换为.mp3)
ffmpeg -i input.wav output.mp3
调整视频大小
要将视频调整为特定分辨率(例如
1280x720)
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
更改视频编解码器
要使用特定编解码器(例如
H.264编解码器)转换视频
ffmpeg -i input.mp4 -c:v libx264 output.mp4
从视频中提取特定时间范围
要从视频中提取特定片段(例如从 1 分钟开始的 30 秒)
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c:v copy -c:a copy output.mp4
-
-ss 00:01:00:开始时间(1分钟) -
-t 00:00:30:时长(30 秒)
合并多个视频
将多个视频文件合并为一个
- 先创建一个文本文件,把文件的名称写进去,如下:
file 'input1.mp4'
file 'input2.mp4'
- 运行命令
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
视频添加水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
overlay=10:10:水印的位置(距左上角10px)
调整视频速度
- 减速(50% 速度)
ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4
- 加速(200% 速度)
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
从视频中创建 GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif output.gif
将音频转换为单声道
ffmpeg -i input.mp3 -ac 1 output.mp3
将音频转换为立体声
ffmpeg -i input.mp3 -ac 2 output.mp3
将音频的音量增加 2 倍
ffmpeg -i input.mp3 -filter:a "volume=2.0" output.mp3
将音频标准化为标准音量级别
ffmpeg -i input.mp3 -filter:a "loudnorm" output.mp3
通过 RTMP 流式传输音频/视频
ffmpeg -re -i input.mp4 -f flv rtmp://live.twitch.tv/app/stream_key
通过 RTP 传输音频
ffmpeg -i input.mp3 -f rtp rtp://192.168.0.100:1234
应用视频滤镜
FFmpeg包含许多过滤器来调整视频属性,如亮度、对比度、饱和度等。
增加亮度和对比度的示例
ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.5" output.mp4
应用音频滤镜
降低音频噪音的示例
ffmpeg -i input.wav -af "afftdn" output.wav
总结
FFmpeg 是一个非常强大和灵活的多媒体工具,用于转换、编辑和处理音频和视频。它支持广泛的格式和编解码器,使其成为任何媒体相关任务的必备工具。使用FFmpeg,可以执行简单的任务,如转换文件和提取音频,以及更高级的任务,如流式传输、创建 gif 和编辑视频。广泛的过滤器和选项使其适用于几乎任何媒体相关的需求。
相关文章:
Linux ffmpeg 基础用法
简介 FFmpeg 是一个强大的开源多媒体框架,用于处理视频、音频和其他多媒体文件和流。它允许转换、录制、编辑、流媒体等等。 安装 Debian/Ubuntu sudo apt update sudo apt install ffmpegRed Hat/CentOS sudo dnf install ffmpegmacOS (via Homebrew) brew i…...
【C++入门】详解(中)
目录 💕1.函数的重载 💕2.引用的定义 💕3.引用的一些常见问题 💕4.引用——权限的放大/缩小/平移 💕5. 不存在的空引用 💕6.引用作为函数参数的速度之快(代码体现) Ǵ…...
深度学习的加速器:Horovod,让分布式训练更简单高效!
什么是 Horovod? Horovod 是 Uber 开发的一个专注于深度学习分布式训练的开源框架,旨在简化和加速多 GPU、多节点环境下的训练过程。它以轻量级、易用、高性能著称,特别适合需要快速部署分布式训练的场景。Horovod 的名字来源于俄罗斯传统舞…...
计算机的错误计算(二百零八)
摘要 用两个大模型计算 arccot(0.9911588354432518e10) . 保留16位有效数字。两个的输出均是错误的。代码的输出格式亦均出错。 本节题目为一读者来信提议(不知该题目有何玄机?)。 例1. 计算 arccot(0.9911588354432518e10) . 保留16位有…...
海康机器人IPO,又近了一步
导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。欢迎大家到本文底部评论区留言。 海康机器人的IPO之路,一路跌宕起伏,让无数投资者和业内人士关注。这不仅仅是一家企业的上市之旅,更是中国智能制造…...
【环境搭建】Metersphere v2.x 容器部署教程踩坑总结
前言 Metersphere部署过程中遇到的问题有点多,原因是其容器的架构蛮复杂的,比较容易踩坑,所以记录一下。 介绍 MeterSphere 是开源持续测试平台,遵循 GPL v3 开源许可协议,涵盖测试管理、接口测试、UI 测试和性能测…...
系统看门狗配置--以ubuntu为例
linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件,需要使用管理员权限来执行: 配置是:系统每 30S 喂一次狗,超过 60S 不进行投喂,就会自动重启。 1. 系统脚本内容: #!/bin/b…...
阅读笔记——《A survey of protocol fuzzing》
【参考文献】Zhang X, Zhang C, Li X, et al. A survey of protocol fuzzing[J]. ACM Computing Surveys, 2024, 57(2): 1-36.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。 目录 1、Introduction 2、Background 2.1、Communication Pro…...
C# 语法中级
总目录 C# 语法总目录 C# 语法中级 lambda 表达式1. 捕获外部变量2. 捕获迭代变量 匿名类型匿名方法异常相关1. 枚举器2. 可枚举对象3. 迭代器3. 迭代器语义4. yield break 语句5. 组合序列 可空类型1. Nullable< T > 结构体 lambda 表达式 编译器在内部将lambda表达式编…...
STORM:从多时间点2D图像中快速重建动态3D场景的技术突破
随着计算机视觉和机器学习技术的迅猛发展,我们已经能够利用AI来解决许多复杂的问题。然而,在处理大规模室外动态3D场景重建时,现有的方法往往面临着诸多挑战,如需要大量人工标注数据、处理速度慢以及难以准确捕捉移动物体等。为了解决这些问题,研究者们开发了STORM(Spati…...
excel前缀和(递增求和)
方法一:https://www.zhihu.com/zvideo/1382164996659515392?utm_id0 假设输入数据在B2:B10,选中单元格C2,输入SUM(B2:B2,然后选中其中的B2,按F4(或者直接输入SUM(B$2:B2),回车确认&…...
【AI日记】25.01.11 Weights Biases | AI 笔记 notion
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛:Forecasting Sticker Sales笔记:我的 AI 笔记主要记在两个地方 有道云笔记:数学公式和符号比较多的笔记notion:没什么数学公式的…...
P8772 [蓝桥杯 2022 省 A] 求和
题目描述 给定 𝑛 个整数 𝑎1,𝑎2,⋯ ,𝑎𝑛 求它们两两相乘再相加的和,即 𝑆𝑎1⋅𝑎2𝑎1⋅𝑎3⋯𝑎1⋅𝑎𝑛&…...
【Oracle篇】深入了解执行计划中的访问路径(含表级别、B树索引、位图索引、簇表四大类访问路径)
💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…...
WSDL的基本概念
《WSDL 语法》这篇文章将详细介绍WSDL(Web Services Description Language)的语法。WSDL是一种基于XML的语言,用于描述Web服务及其访问方式。它允许开发者将Web服务定义为服务访问点或端口的集合,这些服务访问点可以通过特定的协议…...
RabbitMQ解决消息积压的方法
目录 减少发送mq的消息体内容 增加消费者数量 批量消费消息 临时队列转移 监控和预警机制 分阶段实施 最后还有一个方法就是开启队列的懒加载 这篇文章总结一下自己知道的解决消息积压得方法。 减少发送mq的消息体内容 像我们没有必要知道一个的中间状态,只需…...
Android 网络层相关介绍
关注 Android 默认支持的网络管理行为,默认支持的网络服务功能。 功能术语 术语缩写全称释义DHCPv6Dynamic Host Configuration Protocol for IPv6动态主机配置协议的第六版,用于在IPv6网络中动态分配IP地址和其他网络配置参数。DNS Domain Name System域名系统。LLALink-Loc…...
2025年第三届“华数杯”国际赛B题解题思路与代码(Matlab版)
问题1:产业关联性分析 在 question1.m 文件中,我们分析了中国主要产业之间的相互关系。以下是代码的详细解读: % 问题1:分析中国主要产业之间的相互关系function question1()% 清空工作区和命令窗口clear;clc;% 设置中文显示set…...
小米路由器IPv6 功能使用指南
本文不限于多层路由使用IPv6 的情况,提供解决IPv6 无法获取的更硬核的方法,需要有ssh 工具。(无安卓设备,测试环境win、mac、ios) 首先明确一点,就是如果想让你的设备得到GUA 地址,即访问 6.i…...
k8s dashboard离线部署步骤
确定k8s版本,以1.23为例。 部署metrics-server服务,最好用v0.5.2。 用v0.6.0,可能会报以下错误: nodekubemaster:~/Desktop/metric$ kubectl top nodes Error from server (ServiceUnavailable): the server is currently unabl…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
