ffmpeg命令-Windows下常用最全
查询命令
参数 | 说明 |
-version | 显示版本。 |
-formats | 显示可用的格式(包括设备)。 |
-demuxers | 显示可用的demuxers。 |
-muxers | 显示可用的muxers。 |
-devices | 显示可用的设备。 |
-codecs | 显示libavcodec已知的所有编解码器。 |
-decoders | 显示可用的解码器。 |
-encoders | 显示所有可用的编码器。 |
-bsfs | 显示可用的比特流filter。 |
-protocols | 显示可用的协议。 |
-filters | 显示可用的libavfilter过滤器。 |
-pix_fmts | 显示可用的像素格式。 |
-sample_fmts | 显示可用的采样格式。 |
-layouts | 显示channel名称和标准channel布局。 |
-colors | 显示识别的颜色名称。 |
参数 | 说明 |
-f fmt(输入/输出) | 强制输入或输出文件格式。 格式通常是自动检测输入文件,并从输出文件的文件扩展名中猜测出来,所以在大多数情况下这个选项是不需要的。 |
-i url(输入) | 输入文件的网址 |
-y(全局参数) | 覆盖输出文件而不询问。 |
-n(全局参数) | 不要覆盖输出文件,如果指定的输出文件已经存在,请立即退出。 |
-c [:stream_specifier] codec(输入/输出,每个流) | 选择一个编码器(当在输出文件之前使用)或解码器(当在输入文件之前使用时)用于一个或多个流。codec 是解码器/编码器的名称或 copy(仅输出)以指示该流不被重新编码。如:ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT |
-codec [:stream_specifier]编解码器(输入/输出,每个流) | 同 -c |
-t duration(输入/输出) | 当用作输入选项(在-i之前)时,限制从输入文件读取的数据的持续时间。当用作输出选项时(在输出url之前),在持续时间到达持续时间之后停止输出。 |
-ss位置(输入/输出) | 当用作输入选项时(在-i之前),在这个输入文件中寻找位置。 请注意,在大多数格式中,不可能精确搜索,因此ffmpeg将在位置之前寻找最近的搜索点。 当转码和-accurate_seek被启用时(默认),搜索点和位置之间的这个额外的分段将被解码和丢弃。 当进行流式复制或使用-noaccurate_seek时,它将被保留。当用作输出选项(在输出url之前)时,解码但丢弃输入,直到时间戳到达位置。 |
-frames [:stream_specifier] framecount(output,per-stream) | 停止在帧计数帧之后写入流。 |
-filter [:stream_specifier] filtergraph(output,per-stream) | 创建由filtergraph指定的过滤器图,并使用它来过滤流。filtergraph是应用于流的filtergraph的描述,并且必须具有相同类型的流的单个输入和单个输出。在过滤器图形中,输入与标签中的标签相关联,标签中的输出与标签相关联。有关filtergraph语法的更多信息,请参阅ffmpeg-filters手册。 |
录制命令
1 录制视频
ffmpeg -f gdigrab -i desktop -r 30 -s 1920x1080 -c:v libx264 -f mp4 -y out.mp4 录屏整个屏幕命令
ffmpeg:这是命令行工具的名称,调用 FFmpeg 程序。
-f gdigrab:指定输入的设备类型为 gdigrab。gdigrab 是一个视频捕获设备,用于在 Windows 系统上捕获屏幕内容。
-i desktop:指定输入源为桌面。desktop 是一个特殊的输入源,表示整个桌面屏幕。
-r 30:设置帧率为每秒 30 帧。这是视频播放时每秒钟显示的帧数,影响视频的流畅度。
-s 1920x1080:设置视频的分辨率为 1920x1080 像素。这是视频的宽度和高度,决定了视频的清晰度。
-c:v libx264:指定视频编码器为 libx264。libx264 是一个开源的 H.264 编码器,用于压缩视频数据。
-f mp4:指定输出文件的格式为 MP4。这是文件的封装格式,决定了文件的扩展名和兼容性。
-y:在覆盖输出文件时不提示确认。如果输出文件 out.mp4 已经存在,这个选项会直接覆盖它,而不会提示用户确认。
out.mp4:输出文件的名称。这是最终生成的视频文件,保存在当前目录下。
Ctrl + C停止录制。
我用vlc打开我录制的文件,就可以看到我录制的页面了。
2录制音频
使用ffmpeg查看设备索引号
Windows下:ffmpeg -list_devices true -f dshow -i dummy
macOs下:ffmpeg -f avfoundation -list_devices true -i ""
Linux下:v4l2-ctl --list-devices
我的是Windows,我列举的结果如下,报错结果是在列举设备的时候遇到的错误并不影响。
这样想要捕获视频,就可以用下面的命令:
ffmpeg -f dshow -i video="HP TrueVision HD Camera" output.mp4
或者用名称代替
ffmpeg -f dshow -i video="@device_pnp_\\?\usb#vid_30c9&pid_0064&mi_00#6&5040ce6&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" output.mp4
捕获音频就可以用:
ffmpeg -f dshow -i audio="麦克风阵列 (适用于数字麦克风的英特尔® 智音技术)" output.wav 在输入的时候播放个声音录到电脑里
然后在工作目录下就会有输出文件
分解与复用命令
1 格式的转换 将mp4转为flv
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i 输入文件
-vcodec copy 视频编码处理方式
-acodec copy 音频编码处理方式
举例子,将工作目录下的一个mp4转换为mov
ffmpeg -i 1egg.mp4 -vcodec copy -acodec copy outmov.mov
使用ffplay outmov.mov命令可以播放
2 将视频抽取出来 不要音频
ffmpeg -i outmov.mov -an -vcodec copy outonlyv.h264
使用ffplay outonlyv.h264进行播放
3 将音频抽取出来 不要视频
ffmpeg -i outmov.mov -acodec copy -vn outonlya.aac
使用 ffplay outonlya.aac 进行播放
处理原始数据命令
音频的原始数据是pcm,视频的原始数据是yuv。
1 Ffmpeg提取yuv数据:
ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
-i:输入文件
-an:audio no 不处理音频
-c:v rawvideo 将视频转化为原始数据
-pixel_format 像素格式
处理完后用ffplay out.yuv是无法播放的,因为原始数据没有宽高值
使用:ffplay -f rawvideo -pixel_format yuv420p -video_size 1920x1080 out.yuv播放out.yuv
2 ffmpeg提取pcm数据:
ffmpeg -i input.mp4 -f s16le -acodec pcm_s16le outpcm.pcm
-i input.mp4 指定输入文件。
-f s16le 指定输出格式为16位小端的PCM数据。
-acodec pcm_s16le 指定音频编解码器使用PCM 16位小端格式。
outpcm.pcm 是输出文件的名称。
使用ffplay播放ffplay -f s16le -ar 44100 outpcm.pcm
-f s16le 指定输入文件格式为16位小端的PCM数据。
-ar 44100 指定音频的采样率,例如44100Hz,这应该与原始音频文件的采样率相匹配。
滤镜命令
音视频的处理流程:
输入文件----(解封装)----编码数据包----(解码)----解码数据帧----(编码)----编码数据包----(封装)---输出文件
滤镜的处理流程
解码数据帧---------(filter过滤)----过滤后的数据帧------(编码)----编码数据包
1 缩放:ffmpeg -i input.mp4 -vf "scale=w:h" output.mp4
·-vf 表示滤镜选项 scale是滤镜命令
·w:宽 h:高
2 旋转:ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
·transpose=1 顺时针旋转90° 0=顺时针270° 2=逆时针旋转90° 3=逆时针270°
3 模糊命令
ffmpeg -i 1egg.mp4 -vf "boxblur=10:10" output1.mp4
·Boxblur=r:p r模糊半径 p模糊程度
3 裁剪视频
ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4
· w:宽度
· h:高度
· x:裁剪区域左上角的横坐标
· y:裁剪区域左上角的纵坐标
旋转视频
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
· transpose=1:顺时针旋转 90 度
· transpose=2:逆时针旋转 90 度
· transpose=0:水平翻转
· transpose=3:垂直翻转
裁剪与合并命令
裁剪与合并是一种特殊的滤镜命令
1 Windows下裁剪视频
ffmpeg -i input.mp4 -ss 00:00:02 -t 00:00:03 -filter:v "crop=200:150:50:20" cropvideo.mp4
-i 输入文件
-ss 设置视频开始的时间
-t 裁剪视频持续的时间
filter:v "crop=w:h:x:y" 指定裁剪区域 w是宽 h是高 x y是裁剪区域的左上角坐标
cropvideo.mp4 输出文件
使用ffplay cropvideo.mp4 播放视频
2 Windows下合并视频
·创建一个包含所有需要合并的视频文件列表的文本文件 格式如下
·使用命令合并
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
视频与图片互转命令
ffmpeg -i input_video.mp4 -ss 00:00:03 -vframes 1 output_image.jpg
-ss 开始时间
- vframe 1 提取一帧
ffmpeg -i input_video.mp4 -vf fps=0.5 output_%03d.jpg
fps=0.5 一秒钟0.5帧 即每2秒钟提取一帧
output_%03d.jpg 是输出文件的格式,%03d 会被替换为从001开始的数字
输出的图片就是这样的:
直播相关命令
1 推本地视频流到服务
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/streamName
·-re:按时间戳读取文件
·-c copy:使用原始编码
·-f flv:指定输出格式为FLV 后面跟的是一个rtmp服务地址
2 推桌面流到rtmp服务器
ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (Realtek(R) Audio)" -r 20 -vcodec libx264 -preset ultrafast -acodec aac -ac 2 -ar 44100 -ab 128k -pix_fmt yuv420p -f flv "rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_1805854332_79717982&key=123456789876543211472583695&schedule=rtmp&pflag=1"
·-f gdigrab:使用gdigrab进行屏幕捕获
·-i desktop:指定桌面作为输入
·-f dshow -i audio="麦克风 (Realtek(R) Audio)":指定音频输入设备
·-r 20:帧率为20帧/秒
·-vcodec libx264:使用H.264编码
·-preset ultrafast:编码预设为ultrafast
·-acodec aac:使用AAC编码音频
·-ac 2:音频通道数为2
·-ar 44100:音频采样率为44100Hz
·-ab 128k:音频比特率为128kbps
·-pix_fmt yuv420p:像素格式为yuv420p
·-f flv:输出格式为FLV 6
3 拉流并录制
ffmpeg -i rtmp://server/live/streamName -c copy output.flv
4 拉流并播放
ffplay rtmp://server/live/streamName
相关文章:
ffmpeg命令-Windows下常用最全
查询命令 参数 说明 -version 显示版本。 -formats 显示可用的格式(包括设备)。 -demuxers 显示可用的demuxers。 -muxers 显示可用的muxers。 -devices 显示可用的设备。 -codecs 显示libavcodec已知的所有编解码器。 -decoders 显示可用…...
反序列化漏洞靶机实战-serial
一.安装靶机 下载地址为https://download.vulnhub.com/serial/serial.zip,安装好后开启靶机,这里并不需要我们去登录,直接扫描虚拟机nat模式下c网段的ip,看看哪个的80端口开放,然后直接去访问 二.查找cookie 访问靶…...
医疗器械产品没有互联网连接,就不适用于网络安全要求吗?
医疗器械产品是否不适用于网络安全要求,需要考虑产品是否具有网络连接功能以进行电子数据交换或远程控制,以及是否采用储存媒介进行电子数据交换。详细解析如下: 一、医疗器械的网络安全要求不仅限于互联网连接 数据交换接口:医疗…...
可视掏耳勺安全吗?独家揭示六大风险弊病!
很多人习惯在洗漱完顺手拿一根棉签掏耳朵,但是棉签的表面直径大且粗糙,不易将耳朵深处的耳垢挖出,耳垢堆积在耳道深处长时间不清理会导致堵塞耳道,引起耳鸣甚至感染。而可视掏耳勺作为一种新型的挖耳工具,它的安全性也…...
JavaScript 变量声明var、let、const
在 JavaScript 中,var、let和const是用于声明变量的关键字。 let和const是JavaScript里相对较新的变量声明方式。 let用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 const声明一个只读的常量。一旦声明,常量的…...
ipvlan: operation not supported 导致的POD不断重启
情况描述 接到反馈有一台虚拟机HA迁移了,需要检查一下上面业务是否正常,由于是K8S node节点,正常情况下重启会自动恢复的,不过抱着严谨的态度,上去看了一眼。 问题:发现docker运行正常,但是业…...
组蛋白乳酸化和RNA甲基化如何联动?请大数据把这个思路推给科研人
在细胞生物学中,基因表达调控是决定细胞功能与命运的核心过程之一。组蛋白作为修饰性蛋白,在调控基因转录中起着至关重要的作用。近年来,科学家们发现,组蛋白的多种化学修饰(如甲基化、乙酰化、磷酸化等)影…...
操作文件-Path
Java操作文件-Path Paths 参数说明 first:必选参数,表示路径的第一个组件。more:可选参数,表示路径的其他组件,可以传入多个。 创建路径对象 // 创建一个表示当前工作目录的Path对象 Path currentPath Paths.get…...
RAC(Teamcenter )开发,Bom行解包和打包的方法
1、打包 UnpackAllAction allAction new UnpackAllAction((AbstractBOMLineViewerApplication) currentApplication, "packAllAction"); new Thread(allAction).start();2、解包 UnpackCommand command new UnpackCommand(bomLine); command.executeModal();3、注…...
log4j2漏洞练习
log4j2 是Apache的一个java日志框架,我们借助它进行日志相关操作管理,然而在2021年末log4j2爆出了远程代码执行漏洞,属于严重等级的漏洞。apache log4j通过定义每一条日志信息的级别能够更加细致地控制日志生成地过程,受影响的版本…...
OpenEuler安装部署教程
目录 OpenEuler安装部署教程 MobaXterm一款全能的远程工具 yum安装软件 vim编辑器(了解) 防火墙 常用命令 网络工具netstat & telnet 进程管理工具top ps 磁盘free、fdisk 用户、组(了解) 权限(了解&am…...
Canto - hackmyvm
简介 靶机名称:Canto 难度:简单 靶场地址:https://hackmyvm.eu/machines/machine.php?vmCanto 本地环境 虚拟机:vitual box 靶场IP(Canto):192.168.130.53 windows_IP:192.1…...
【数据结构进阶】手撕红黑树
🔥个人主页: Forcible Bug Maker 🔥专栏: C || 数据结构 目录 🌈前言🔥红黑树的概念🔥手撕红黑树红黑树结点的定义红黑树主体需要实现的成员函数红黑树的插入findEmpty和Size拷贝构造析构函数和…...
【C++从小白到大牛】类和对象
目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 类的成员函数两种定义方式: 1. 声明和定义全部放在类体中 2. 类声明放在.h文件中,成员函数定义放在.cpp文件中 成员变量命名规则的建议: 四、类的访问限定符 【访问限…...
Kafka 为什么这么快的七大秘诀,涨知识了
我们都知道 Kafka 是基于磁盘进行存储的,但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点,其吞吐量动辄几十上百万。 在座的靓仔和靓女们是不是有点困惑了,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间。…...
一文解决3D车道线检测:最新单目3D车道线检测综述
前言 场景理解是自动驾驶中极具挑战的任务,尤其是车道检测。车道是道路分割的关键,对车辆安全高效行驶至关重要。车道检测技术能自动识别道路标记,对自动驾驶车辆至关重要,缺乏这项技术可能导致交通问题和事故。车道检测面临多种…...
稳中向好,今年新招6000人
团子校招 近日,美团宣布开启面向 2025 届的校园招聘,招聘规模达 6000 人。 虽然相比京东(宣布招聘 16000 人)稍有逊色,但 6000 这个校招规模可一点不少。 要知道,京东是重自营的传统电商,16000 …...
使用kettle开源工具进行跨库数据同步
数据库同步可以用: 1、Navicat 2、Kettle 3、自己写代码 调用码神工具跨库数据同步 -连接 4、其它 实现 这里使用Kettle来同步,主要是开源的,通过配置就可以实现了 Kettle的图形化界面(Spoon)安装参考方法 ht…...
Golang | Leetcode Golang题解之第307题区域和检索-数组可修改
题目: 题解: type NumArray struct {nums, tree []int }func Constructor(nums []int) NumArray {tree : make([]int, len(nums)1)na : NumArray{nums, tree}for i, num : range nums {na.add(i1, num)}return na }func (na *NumArray) add(index, val …...
Golang | Leetcode Golang题解之第301题删除无效的括号
题目: 题解: func checkValid(str string, lmask, rmask int, left, right []int) bool {cnt : 0pos1, pos2 : 0, 0for i : range str {if pos1 < len(left) && i left[pos1] {if lmask>>pos1&1 0 {cnt}pos1} else if pos2 <…...
【Story】《程序员面试的“八股文”辩论:技术基础与实际能力的博弈》
目录 程序员面试中的“八股文”:助力还是阻力?1. “八股文”的背景与定义1.1 “八股文”的起源1.2 “八股文”的常见类型 2. “八股文”的作用分析2.1 理论基础的评价2.1.1 助力2.1.2 阻力 3. 实际工作能力的考察3.1 助力3.2 阻力 4. 面试中的背题能力4.…...
初步了解泛型
目录 泛型的引入 泛型 泛型 泛型类 泛型的上界 泛型的引入 之前学习的数组里面是存放着整型或者自字符串中一种的数组,如果想要在一个数组里面放多种类型数据,我们该怎么去做呢?Object类或许是一个好的解决方法,因为Object类…...
【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据
欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景读取并保存NPOI信息NPOI 插件介绍基本功能示例代码写入 Excel 文件…...
C++推荐的oj网站
洛谷 信息学奥赛一本通 C语言网 codeforces 杭电oj...
springmvc处理http请求的底层逻辑
http-nio-8088-Poller线程中在org.apache.tomcat.util.net.NioEndpoint.Poller#run这个函数里循环检测selector,若发现有SocketEvent.OPEN_READ事件则会将SelectionKey.attachment中的内容作为入参包装成runable,然后由org.apache.tomcat.util.threads.T…...
干货满满,从零到一:编程小白如何在大学成为编程大神?
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
前端-如何通过docker打包Vue服务成镜像并在本地运行(本地可以通过http://localhost:8080/访问前端服务)
1、下载安装docker,最好在vs code里安装docker的插件。 下载链接:https://www.docker.com/products/docker-desktop 🎉 Docker 简介和安装 - Docker 快速入门 - 易文档 (easydoc.net) 2、准备配置文件-dockerfile文件和nginx.conf文件 do…...
零基础学习【Mybatis】这一篇就够了
Mybatis 查询resultType使用resultMap使用单条件查询多条件查询模糊查询返回主键 动态SQLifchoosesetforeachsql片段 配置文件注解增删改查结果映射 查询 resultType使用 当数据库返回的结果集中的字段和实体类中的属性名一一对应时, resultType可以自动将结果封装到实体中 r…...
Shell入门(保姆级教学)
Shell是一种命令行解释器,也是一种脚本语言,广泛应用于Unix和类Unix系统中,例如Linux。它是用户与操作系统内核交互的桥梁,通过Shell可以执行系统命令、管理文件系统、处理文本数据等。本文将带你入门Shell编程,涵盖基…...
【JDK11和JDK8并行与切换】
一、JDK11安装 1、下载jdk11,点击.exe安装在:C:\Program Files\Java\jdk-11\ 2、配置JAVA_HOME 变量名为JAVA_HOME 变量值为jdk安装路径 3、配置PATH 找到系统变量里的PATH 双击或者单击后点击编辑 点击右上角的新建 新建两条 %JAVA_HOME%\bin …...
wordpress 素材网站模版/重庆高端网站seo
Hello,各位叨友们好呀!我是叨叨君~Word中有些常见的操作,明明1秒钟就能搞定,但实际操作的过程中,有很多人往往花费大量的时间,费时费力不说,最后很有可能还搞不定!今天就跟大家分享一…...
嘉兴公司网站模板建站/开发一个网站的步骤流程
2011年是个不同寻常的一年,专科大二了充满着迷茫、但是抱着对未来充满希望的来到了提高班;2012年锐变着、成熟了、强大着、收获着…… 这一年的全局图: 思想上:来到在提高班体会最深的就是:学习如何为人处事、先学会做人再谈学问、…...
wordpress 简单主题/视频剪辑培训班
更换gcc编译器可以解决 -D CMAKE_C_COMPILER/usr/bin/gcc-4.8转载于:https://www.cnblogs.com/gabrialrx/p/9001554.html...
没有做防注入的网站/最近时政热点新闻
程序员在面试过程中,除了准备好自身的专业知识和过硬的技能外,也不能忽略一些常规的面试细节,针对多数IT行业搞技术的伙伴,小编今天总结了几个程序员平时面试不怎么注意的问题,来分享一下。1、请做一下自我介绍这是一个…...
网站建设与网站主机的选择/拼多多seo是什么意思
要想在CentOS中自动加载内核模块,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块。 下面是我所用的一个名为8021q.modules的脚本,用来在我的CentOS 5.3中自动加载802.1Q模块: #! /bin/sh/sbin/modinf…...
一个网站可以做多少地区词/自媒体营销的策略和方法
文章目录[点击展开](?)[] KSFramework KEngine SLua Framework KSFramework KSFramework是一个整合KEngine、SLua的Unity 5开发框架,并为程序、美术、策划、运营提供辅助工具集。 热重载是KSFramework的开发重点——在不重启游戏的前提下,重载代码、配…...