FFmpeg之一——常用命令
文章目录一、 FFmpeg 音视频的处理流程二、FFmpeg 常用命令2.1、查看本机支持的采集设备2.2、 录制视频2.2.1、原始视频2.2.2、编码的视频2.3、录制音频2.3.1、原始音频2.3.2、编码的音频2.4、录制音视频2.5、文件格式转换2.6、提取音频 2.7、提取视频2.8、合并音视频2.9、视频裁剪时长分辨率2.10、 倍速视频倍速音频倍速音视频倍速2.11、[视频转图片](https://www.ffmpeg.org/ffmpeg-formats.html#image2_002c-image2pipe)2.12、[图片转视频](https://www.ffmpeg.org/ffmpeg-formats.html#image2-1)2.13、推流文件推流摄像头推流桌面屏幕推流2.14、拉流三、FFprobe 常用命令查看格式查看帧信息查看packet信息以下命令和参数都可以在 官方文档找到解释一、 FFmpeg 音视频的处理流程demuxer 把输入文件INPUT.mkv 经过demuxer解封装得到stream0 (经过encoder的音频数据例如aac) 和 stream1 (经过encoder的视频数据例如h264)decoder视频 H264 - YUV、音频 opus/aac- pcm(上图没有对音频进行decode)encoder视频 YUV - H264音频 pcm - opus/aac(上图没有对音频进行encode)muxer 把编码后的opush264 封装为OUTPUT.mp4上图的audio没有经过解码和编码通过streamcopy的方式保存到了输出文件这样速度更快。如果需要使用Filtergraphs (ffmpeg-filters)必须要经过 decoder因为Filtergraphs是对原始数据进行处理。如下图二、FFmpeg 常用命令可通过ffmpeg -h查看 查询基本信息的参数ffmpeg的命令格式ffmpeg[global_options]{[input_file_options]-i input_url}...{[output_file_options]output_url}...Each input or output can, in principle, contain any number of elementary streams of different types (video/audio/subtitle/attachment/data), though the allowed stream counts and/or types may be limited by the container format. Selecting which streams from which inputs will go into which output is either done automatically or with the -map option (see the Stream selection chapter).To refer to inputs/outputs in options, you must use their indices (0-based). E.g. the first input is 0, the second is 1, etc. Similarly, streams within an input/output are referred to by their indices. E.g. 2:3 refers to the fourth stream in the third input or output. Also see the Stream specifiers chapter.2.1、查看本机支持的采集设备查看当前机器的输入输出设备ffmpeg-devices该命令在mac的输出有一项是 AVFoundationAVFoundation is the currently recommended framework by Apple for streamgrabbing on OSX 10.7 as well as on iOS.Print the list of AVFoundation supported devices and exit:ffmpeg-f avfoundation-list_devicestrue-i查看编解码器的信息例如支持的像素格式ffmpeg-h encoderh264_videotoolbox2.2、 录制视频2.2.1、原始视频ffmpeg-f avfoundation-i1-video_size1280x720-r30out.yuv-i “1” 表示video的选择是 从AVFoundation支持的video设备中索引1 的video设备具体是指桌面-video_size 1280x720 是无效的从设备输入不支持改变分辨率-r 30 此例子中是 指定输出的帧率为30fps播放yuv 原始视频时需要指定分辨率和像素格式这些信息在录制时会输出ffplay-pixel_format uyvy422-video_size5120x2880 out.yuv2.2.2、编码的视频ffmpeg-f avfoundation-i1out.mp42.3、录制音频2.3.1、原始音频ffmpeg-f avfoundation-i:0-ar44100-f s16le out.pcm-i :0 表示audio的选择是 AVFoundation支持的audio设备中索引0的设备具体是指桌面-ar 44100 此处指设置输出文件的采样率-f s16le 指定原始音频的采样格式播放原始音频需要指定采样格式ffplay-f s16le out.pcm2.3.2、编码的音频ffmpeg-f avfoundation-i:0out.wav2.4、录制音视频ffmpeg-f avfoundation-i1:0out.mp4红框中视频解码器 rawvideo编码器mpeg4使用命令ffmpeg -encoders可以找到该编码器对音频、视频指定编码器ffmpeg-f avfoundation-i1:0-c:v h264-c:a aac-ac2-s3840x2160 out.mp42.5、文件格式转换ffmpeg-i input.mp4-c:a copy-c:v copy output.flv-i input.mp4 输入文件input.mp4-c:a copy 把解封装后的已编码音频数据拷贝到输出文件-c:v copy 把解封装后的已编码视频数据拷贝到输出文件output.flv 输出文件output.flv转GIF、flv、wav等格式 只需要修改命令中的输出名后缀例如output1.mp4 改为 output.gif 。wav 没有视频只有音频ffmpeg会自动识别后缀并处理2.6、提取音频 ffmpeg-i input.mp4-c:a copy-vn output.aac-c:a copy 音频编码器只拷贝。就是把 input.mp4 经过demuxer后得到的编码的音频文件直接拷贝不用解码再编码。-vn As an output option, disables video recording2.7、提取视频ffmpeg-i input.mp4-c:v copy-an output.h264提取YUV数据ffmpeg-i input.mp4-an-pixel_format yuv420p out.yuv-c:v rawvideo 指定视频编码器rawvideo 可以通过ffmpeg -encoders 找到2.8、合并音视频ffmpeg-i output.aac-i output.h264-c:v copy-c:a copy output.mp42.9、视频裁剪时长从1s开始裁剪5sffmpeg-ss00:00:01.000-t5-i input1.mp4 output1.mp4裁剪最后5s不能和-ss同时用ffmpeg-sseof-5-i input1.mp4 output1-2.mp4分辨率改变视频分辨率为宽320、高240ffmpeg-i input.mp4-s320x240 output.mp4改变视频分辨率为宽480、高度为等比缩放像素数可被1整除ffmpeg-i input.mp4-filter:vscale480:-1,fps10output.mp4scale480:-1 宽度为480px高度为等比缩放像素数可被1整除fps10 输出帧率是10 frame per second2.10、 倍速视频倍速过滤器setpts、asetpts使用过滤器setpts倍速播放视频ffmpeg-i input1.mp4-filter:vsetpts0.2*PTSoutput1-3.mp4视频倍速播放时长缩短播放完就黑屏。音频播放也不太正常中间有一段没有声音。可通过参数 -an 过滤掉音频。过滤器asetpts 不能改变音频的速度只能改变音频的pts缩短整体的播放时长ffmpeg-i input1.mp4-vn-filter:aasetpts0.2*PTSoutput1-3.mp4音频倍速使用过滤器atempo 倍速播放音频ffmpeg-i input1.mp4-filter:aatempo2output1.mp4音频会加速2倍播放时长缩短到一半 视频正常播放也就是说后半段视频没有音频音视频倍速根据map中的关于filtergraph的用法实现音视频倍速播放ffmpeg-i test.mp4-filter_complex[0:v]setpts0.5*PTS[v];[0:a]atempo2.0[a]-map[v]-map[a]output.mp42.11、视频转图片从input.mp4 提取一系列图片ffmpeg-i input.mp4-r30-f image2 foo-%03d.jpeg-r 30 fps 是30表示一秒生成30张图片foo-%03d.jpeg 文件名格式 会生成 foo-001.jpeg、foo-002.jpeg … 等2.12、图片转视频用一系列图片 生成一个mp4文件ffmpeg-r30-i foo-%05d.jpeg output.mp42.13、推流文件推流ffmpeg-loglevel debug-re-stream_loop-1-i input3.mp4-c:v h264-c:a aac-ac2-g30-b:v1500k-b:a128k-f flvrtmp://xxxxx-re 通过限制输入的读取速度确保推流时以与文件帧率一致的速度读取。强制 FFmpeg 模拟文件“实时播放”的行为。如果不加 -reFFmpeg 会以最快速度读取输入文件。这样推流的速度会远超正常播放速度导致• 流媒体服务器缓冲过载。• 推流失败甚至崩溃。-stream_loop -1 循环播放-b:v 视频码率-b:a 音频码率问题推流失败 检查流的编码格式是否符合rtmp服务器的接收格式 通过-c:v 指定视频编码器推流成功可以看到画面但是没有声音。 通过 -c:a 指定音频编码器摄像头推流ffmpeg-f avfoundation-r30-i0:0-c:v h264-c:a aac-ac2-g30-b:v1500k-b:a128k-f flv rtmp://xxxxxxx如果在输入参数中没有 -r 30 会报如下错误。高手指点一下为什么会出现framerate (29.970030)桌面屏幕推流ffmpeg-f avfoundation-r30-i1:0-c:v h264-c:a aac-ac2-g30-b:v1500k-b:a128k-s3840x2160-f flv rtmp://xxxxxxx-s 3840x2160 设置输出的分辨率如果不设置默认是5120x2880会报错Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.2.14、拉流拉流播放ffplay rtmp://xxxxxx拉流并保存文件ffmpeg-i rtmp://xxxxxx-c copy dump.flv三、FFprobe 常用命令查看格式ffprobe -v error -show_format -show_streams input1.mp4查看帧信息ffprobe-show_frames-select_streams v input1.mp4|head-n50查看input1.mp4的视频的帧信息的前50行你可能注意到了在含有b帧的视频中pts 和pkg.dts 竟然也是一样的关于这个讨论已经存在挺久但我还是没有完全理解为什么要那样做 高手们可以指导一下。dts是解码的时间戳应该是作用于packet你想到去查看packet信息命令如下查看packet信息ffmpeg-i2.mp4-dump-map0:v-f null-这回dts 和pts 是正确了但你既要查看帧信息的pts还要看packet的dts、pts还有帧类型。好吧谁叫你是我粉丝代码写好了在这里直接copy算抄袭点赞后算借鉴。

相关新闻

解锁QQ音乐加密文件:macOS专属解密工具QMCDecode完全指南

解锁QQ音乐加密文件:macOS专属解密工具QMCDecode完全指南

解锁QQ音乐加密文件:macOS专属解密工具QMCDecode完全指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默…

2026/8/24 7:40:09 阅读更多 →
Blender到Godot 4一键导入:Importality插件原理与实战指南

Blender到Godot 4一键导入:Importality插件原理与实战指南

1. 项目概述:为什么我们需要一个“无缝”的桥梁?如果你同时是Blender和Godot 4的用户,那么下面这个场景你一定不陌生:在Blender里精心雕琢了一个角色模型,展好了UV,贴上了PBR材质,甚至绑定了骨骼…

2026/8/24 5:29:04 阅读更多 →
终极安全防护:如何用YimMenu彻底解决GTA5游戏崩溃问题

终极安全防护:如何用YimMenu彻底解决GTA5游戏崩溃问题

终极安全防护:如何用YimMenu彻底解决GTA5游戏崩溃问题 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimM…

2026/8/13 21:11:29 阅读更多 →

最新新闻

SP-Mind:空间蛋白质组学自主推理智能体的架构设计与实践

SP-Mind:空间蛋白质组学自主推理智能体的架构设计与实践

1. 项目概述:当空间蛋白质组学遇上自主智能体最近在生物信息学和计算生物学圈子里,一个名为“SP-Mind”的项目引起了我的注意。这名字听起来就很有野心——“Spatial Proteomics Mind”,直译过来就是“空间蛋白质组学大脑”。它本质上是一个为…

2026/8/24 10:06:26 阅读更多 →
MiddleClick-Sonoma 上手记:三指中键点击,3 分钟跑起来

MiddleClick-Sonoma 上手记:三指中键点击,3 分钟跑起来

MiddleClick-Sonoma 上手记:三指中键点击,3 分钟跑起来 【免费下载链接】MiddleClick-Sonoma  "Wheel click" with three-finger click/tap for Trackpad and Magic Mouse. 项目地址: https://gitcode.com/gh_mirrors/mi/MiddleClick-Sono…

2026/8/24 10:06:26 阅读更多 →
SimuPy快速上手教程:10分钟从pip安装到第一个框图仿真

SimuPy快速上手教程:10分钟从pip安装到第一个框图仿真

SimuPy快速上手教程:10分钟从pip安装到第一个框图仿真 【免费下载链接】simupy A framework for modeling and simulating dynamical systems 项目地址: https://gitcode.com/gh_mirrors/si/simupy SimuPy 是一个开源的 Python 动力学系统建模与仿真框架&…

2026/8/24 10:06:26 阅读更多 →
如何给 Agentic 搭一套靠谱的 Agentic 测试:完整指南

如何给 Agentic 搭一套靠谱的 Agentic 测试:完整指南

如何给 Agentic 搭一套靠谱的 Agentic 测试:完整指南 【免费下载链接】agentic Your API ⇒ Paid MCP. Instantly. 项目地址: https://gitcode.com/GitHub_Trending/ag/agentic Agentic 是面向任意 LLM 的 TypeScript AI 代理标准库,把 AI SDK、L…

2026/8/24 10:06:26 阅读更多 →
双指针技巧大揭秘:LintCode 20道经典数组题的C++11实现清单

双指针技巧大揭秘:LintCode 20道经典数组题的C++11实现清单

双指针技巧大揭秘:LintCode 20道经典数组题的C11实现清单 【免费下载链接】LintCode 📝 C11 Solutions of All 289 LintCode Problems (No More Updates) 项目地址: https://gitcode.com/gh_mirrors/lintc/LintCode 在 LintCode 题库中&#xff0c…

2026/8/24 10:06:26 阅读更多 →
嵌入式DSP实战入门:从FFT频谱到电机控制的应用路径

嵌入式DSP实战入门:从FFT频谱到电机控制的应用路径

1. 从“黑盒子”到“透明工具”:我理解的DSP学习路径 提到DSP,很多刚入行的朋友,尤其是从单片机(比如STM32)转过来的,第一反应可能就是“数字信号处理”,然后脑子里立刻浮现出一堆复杂的数学公式…

2026/8/24 10:05:26 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →