FFmpeg 命令行 音视频格式转换
📚:FFmpeg 提供了丰富的命令行选项和功能,可以用来处理音视频文件、流媒体等,掌握命令行的使用,可以有效提高工作效率。
目录
一、视频转换和格式转换
🔵 将视频文件转换为另一种格式
🔵 指定视频编码器和比特率
二、音频转换和格式转换
🔵 将音频文件转换为另一种格式
🔵 指定音频编码器和比特率
三、合并视频和音频
🔵 合并视频和音频流
四、视频剪切和裁剪
🔵 裁剪视频
五、视频截图和抽取帧
🔵 截取视频帧
六、 屏幕录制和实时流媒体
🔵录制桌面
🔵推送实时流媒体
七、常用参数集合
总结
以下是一些常见的 FFmpeg 命令行用法和示例:
// 一般的 ffmpeg 命令结构如下:ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件
一、视频转换和格式转换
🔵 将视频文件转换为另一种格式
// 将 input.mp4 文件转换为 output.avi 文件ffmpeg -i input.mp4 output.avi
🔵 指定视频编码器和比特率
// -c:v libx264 指定视频编码器为 H.264,
// -b:v 1000k 指定视频比特率为 1000kbit/sffmpeg -i input.mp4 -c:v libx264 -b:v 1000k output.mp4
二、音频转换和格式转换
🔵 将音频文件转换为另一种格式
// 将 input.wav 转换为 output.mp3ffmpeg -i input.wav output.mp3
🔵 指定音频编码器和比特率
// -c:a libmp3lame 指定音频编码器为 MP3(LAME)
// -b:a 128k 指定音频比特率为 128kbit/sffmpeg -i input.wav -c:a libmp3lame -b:a 128k output.mp3
三、合并视频和音频
🔵 合并视频和音频流
// -i video.mp4 -i audio.wav 分别指定视频和音频输入文件。
// -c:v copy 表示视频流直接复制,
// -c:a aac 指定音频编码为 AAC。
// -strict experimental 是为了支持某些 AAC 编码器ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
四、视频剪切和裁剪
🔵 裁剪视频
// 从原视频中裁剪出5s的视频
// -ss 00:00:05 指定开始裁剪的时间(这里是 5s),
// -to 00:00:10 指定结束时间(这里是 10s)。
// -c:v copy 和 -c:a copy 表示视频和音频流不重新编码,直接复制ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c:v copy -c:a copy output.mp4
五、视频截图和抽取帧
🔵 截取视频帧
// -vf "select='eq(n\,100)'" 表示选择第 100 帧作为输出。
// -vsync vfr 设置为可变帧率输出。
// 输出文件是 frame.png。ffmpeg -i input.mp4 -vf "select='eq(n\,100)'" -vsync vfr frame.png
六、 屏幕录制和实时流媒体
🔵录制桌面
// 在linux 系统下进行屏幕录制
// -f x11grab 表示使用 X11 桌面录制,
// -framerate 30 设置帧率为 30fps,
// -video_size 1920x1080 设置视频尺寸,
// -i :0.0+0,0 是屏幕位置参数。ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+0,0 output.mp4// 在 Windows 系统上进行屏幕录制
// -f gdigrab:使用 gdigrab 输入设备,这是在 Windows 上进行屏幕捕获的一种方法。
// -framerate 30:指定录制的帧率,可以根据需要进行调整。
// -video_size 1920x1080:指定录制的视频尺寸,这里设置为1920x1080,你也可以根据需要调整。
// -i desktop:指定捕获整个桌面。你也可以指定具体的窗口标题或坐标区域进行捕获。
// 停止 ctrl + cffmpeg -f gdigrab -framerate 30 -video_size 1920x1080 -i desktop output.mp4
🔵推送实时流媒体
// -re 表示以实时速率读取输入,
// -i input.mp4 指定输入文件。
// -c:v libx264 和 -c:a aac 分别指定视频和音频编码器。
// rtmp://server/live/streamKey 是推流到的服务器地址和流名ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 128k -f flv rtmp://server/live/streamKey
七、常用参数集合
// 输入和输出选项:-i 输入文件:指定输入文件。
-f 格式:指定输入或输出的格式,例如 -f mp4。
-r 帧率:设置帧率,例如 -r 30。
-s 分辨率:设置视频分辨率,例如 -s 1920x1080。// 视频处理-c:v 编解码器:指定视频编解码器,如 -c:v libx264。
-b:v 比特率:设置视频比特率,例如 -b:v 2M。
-vf 滤镜:应用视频滤镜,例如 -vf scale=1280:720(调整分辨率)或 -vf crop=w:h:x:y(裁剪)。// 音频处理-c:a 编解码器:指定音频编解码器,如 -c:a aac。
-b:a 比特率:设置音频比特率,例如 -b:a 192k。
-ar 采样率:设置音频采样率,如 -ar 44100。// 其他常用选项-ss 开始时间:从指定时间开始处理输入文件。
-t 持续时间:设置处理的持续时间。
-map 选项:映射输入流。
-preset 设置:调整编码速度和质量之间的平衡。
总结
这些是常见的 ffmpeg
命令行选项和功能,能够涵盖大多数基本的视频和音频处理需求。根据具体的任务和需求,可以灵活组合这些选项来完成各种复杂的视频处理任务。
相关文章:

FFmpeg 命令行 音视频格式转换
📚:FFmpeg 提供了丰富的命令行选项和功能,可以用来处理音视频文件、流媒体等,掌握命令行的使用,可以有效提高工作效率。 目录 一、视频转换和格式转换 🔵 将视频文件转换为另一种格式 🔵 指定…...

Jmeter使用JSON Extractor提取多个变量
1.当正则不好使时,用json extractor 2.提取多个值时,默认值必填,否则读不到变量...

c++ 设计模式 的课本范例(下)
(19) 桥接模式 Bridge,不是采用类继承,而是采用类组合,一个类的数据成员是类对象,来扩展类的功能。源码如下: class OS // 操作系统负责绘图 { public:virtual ~OS() {}virtual void draw(cha…...

结合数据索引结构看SQL的真实执行过程
引言 关于数据库设计与优化的前几篇文章中,我们提到了数据库设计优化应该遵守的指导原则、数据库底层的索引组织结构、数据库的核心功能组件以及SQL的解析、编译等。这些其实都是在为SQL的优化、执行的理解打基础。 今天这篇文章,我们以MySQL中InnoDB存…...

spark shuffle——shuffle管理
ShuffleManager shuffle系统的入口。ShuffleManager在driver和executor中的sparkEnv中创建。在driver中注册shuffle,在executor中读取和写入数据。 registerShuffle:注册shuffle,返回shuffleHandle unregisterShuffle:移除shuff…...

HTMLCSS(入门)
HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂,工资过万</body> </html> <!DOCTYPE>文档类型声明,告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…...

富格林:曝光可信策略制止亏损
富格林指出,相信大家都对黄金投资的价值空间有目共睹,现如今黄金市场波动频繁,因此不少投资者也开始加入该市场试图赢得额外的财富。但作为新手投资者贸贸然地进场操作,亏损的几率是很大的,因此要学会掌握正规平台曝光…...

Android --- Service
出自于此,写得很清楚。关于Android Service真正的完全详解,你需要知道的一切_android service-CSDN博客 出自【zejian的博客】 什么是Service? Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。 服务可由其他应用组件…...

Vue3从入门到精通(三)
vue3插槽Slots 在 Vue3 中,插槽(Slots)的使用方式与 Vue2 中基本相同,但有一些细微的差异。以下是在 Vue3 中使用插槽的示例: // ChildComponent.vue <template><div><h2>Child Component</h2&…...

【FreeRTOS】同步与互斥通信-有缺陷的互斥案例
目录 同步与互斥通信同步与互斥的概念同步与互斥并不简单缺陷分析汇编指令优化过程 - 关闭中断时间轴分析 思考时刻 参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 同步与互斥通信 同步与互斥的概念 一句话理解同步与互斥:我等你用完厕所,我再…...

Docker 安装 Python
Docker 安装 Python 在当今的软件开发领域,Docker 已成为一项关键技术,它允许开发人员将应用程序及其依赖环境打包到一个可移植的容器中。Python,作为一种广泛使用的高级编程语言,经常被部署在 Docker 容器中。本文将详细介绍如何在 Docker 中安装 Python,以及如何配置环…...

外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——4.预后相关外泌体基因确定单因素cox回归(2)
内容如下: 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的…...

C++: Map数组的遍历
在C中,map是一个关联容器,它存储的元素是键值对(key-value pairs),其中每个键都是唯一的,并且自动根据键来排序。遍历map的方式有几种,但最常用的两种是使用迭代器(iterator…...

【Windows】Bootstrap Studio(网页设计)软件介绍及安装步骤
软件介绍 Bootstrap Studio 是一款专为前端开发者设计的强大工具,主要用于快速创建现代化的响应式网页和网站。以下是它的主要特点和功能: 直观的界面设计 Bootstrap Studio 提供了直观的用户界面,使用户能够轻松拖放元素来构建网页。界面…...

二维舵机颜色追踪,使用树莓派+opencv+usb摄像头+两个舵机实现颜色追踪,采用pid调控
效果演示 二维云台颜色追踪 使用树莓派opencvusb摄像头两个舵机实现颜色追踪,采用pid调控 import cv2 import time import numpy as np from threading import Thread from servo import Servo from pid import PID# 初始化伺服电机 pan Servo(pin19) tilt Serv…...

c进阶篇(四):内存函数
内存函数以字节为单位更改 1.memcpy memcpy 是 C/C 中的一个标准库函数,用于内存拷贝操作。它的原型通常定义在 <cstring> 头文件中,其作用是将一块内存中的数据复制到另一块内存中。 函数原型:void *memcpy(void *dest, const void…...

新手入门:无服务器函数和FaaS简介
无服务器(Serverless)架构的价值在于其成本效益、弹性和扩展性、简化的开发和部署流程、高可用性和可靠性以及使开发者能够专注于业务逻辑。通过自动化资源调配和按需计费,无服务器架构能够降低成本并适应流量变化,同时简化开发流…...

基于Transformer的端到端的目标检测 | 读论文
本文正在参加 人工智能创作者扶持计划 提及到计算机视觉的目标检测,我们一般会最先想到卷积神经网络(CNN),因为这算是目标检测领域的开山之作了,在很长的一段时间里人们都折服于卷积神经网络在图像处理领域的优势&…...

6.8应用进程跨网络通信
《计算机网络》第7版,谢希仁 理解socket通信...

redis布隆过滤器原理及应用场景
目录 原理 应用场景 优点 缺点 布隆过滤器(Bloom Filter)是一种空间效率很高的随机数据结构,它利用位数组和哈希函数来判断一个元素是否存在于集合中。 原理 数据结构: 位数组:一个由0和1组成的数组,初始…...

vue+openlayers之几何图形交互绘制基础与实践
文章目录 1.实现效果2.实现步骤3.示例页面代码3.基本几何图形绘制的关键代码 1.实现效果 绘制点、线、多边形、圆、正方形、长方形 2.实现步骤 引用openlayers开发库。加载天地图wmts瓦片地图。在页面上添加几何图形绘制的功能按钮,使用下拉列表(sel…...

「多模态大模型」解读 | 突破单一文本模态局限
编者按:理想状况下,世界上的万事万物都能以文字的形式呈现,如此一来,我们似乎仅凭大语言模型(LLMs)就能完成所有任务。然而,理想很丰满,现实很骨感——数据形态远不止文字一种&#…...

Redis深度解析:核心数据类型与键操作全攻略
文章目录 前言redis数据类型string1. 设置单个字符串数据2.设置多个字符串类型的数据3.字符串拼接值4.根据键获取字符串的值5.根据多个键获取多个值6.自增自减7.获取字符串的长度8.比特流操作key操作a.查找键b.设置键值的过期时间c.查看键的有效期d.设置key的有效期e.判断键是否…...

C语言 指针和数组——指针的算术运算
目录 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结 指针的算术运算 指针加上一个整数 指针减去一个整数 指针相减 指针的关系比较运算 小结 指针变量 – 指针类型的变量,保存地址型数据 指针变量与其他类型…...

[C++][CMake][CMake基础]详细讲解
目录 1.CMake简介2.大小写?3.注释1.注释行2.注释块 4.日志 1.CMake简介 CMake是一个项目构建工具,并且是跨平台的 问题 – 解决 如果自己动手写Makefile,会发现,Makefile通常依赖于当前的编译平台,而且编写Makefile的…...

CCD技术指标
CCD尺寸,即摄象机靶面。原多为1/2英寸,现在1/3英寸的已普及化,1/4英寸和1/5英寸也已商品化。CCD像素,是决定了显示图像的清晰程度,。CCD是由面阵感光元素组成,每一个元素称为像素,像素越多&…...

SpringBoot系列——使用Spring Cache和Redis实现查询数据缓存
文章目录 1. 前言2. 缓存2.1 什么是缓存2.2 使用缓存的好处2.3 缓存的成本2.4 Spring Cache和Redis的优点 3. Spring Cache基础知识3.1 Spring Cache的核心概念3.2 Spring Cache的注解3.2.1 SpEL表达式3.2.2 Cacheable3.2.3 CachePut3.2.4 CacheEvict 4. 实现查询数据缓存4.1 准…...

【算法】(C语言):冒泡排序、选择排序、插入排序
冒泡排序 从第一个数据开始到第n-1个数据,依次和后面一个数据两两比较,数值小的在前。最终,最后一个数据(第n个数据)为最大值。从第一个数据开始到第n-2个数据,依次和后面一个数据两两比较,数值…...

iOS项目怎样进行二进制重排
什么是二进制重排 ? 在iOS项目中,二进制重排(Binary Reordering 或者 Binary Rearrangement)是一种优化技术,主要目的是通过重新组织应用程序的二进制文件中的代码和数据段,来提高应用程序的性能ÿ…...

CentOS中使用SSH远程登录
CentOS中使用SSH远程登录 准备工作SSH概述SSH服务的安装与启动建立SSH连接SSH配置文件修改SSH默认端口SSH文件传输 准备工作 两台安装CentOS系统的虚拟机 客户机(192.168.239.128) 服务器(192.168.239.129) SSH概述 Secure S…...