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/10/17 4:00:26 阅读更多 →
Blender到Godot 4一键导入:Importality插件原理与实战指南

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

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

2026/10/17 1:09:15 阅读更多 →
终极安全防护:如何用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/10/17 0:35:49 阅读更多 →

最新新闻

从AI算力标杆项目看智算交付:训练集群与推理平台的工程能力

从AI算力标杆项目看智算交付:训练集群与推理平台的工程能力

某智能计算技术服务商一口气拿下两个AI算力标杆项目的中标消息,这两天在我们这个圈子里讨论度不低。做智算基础设施几年下来,我的第一反应不是去猜合同金额,而是想拆解一件事:这种“AI算力标杆项目”到底在采购什么。表面看是加速…

2026/10/18 10:50:51 阅读更多 →
可重构MIMO性能增益理论分析:毫米波稀疏信道下的容量推导与仿真复现

可重构MIMO性能增益理论分析:毫米波稀疏信道下的容量推导与仿真复现

1. 从标题拆解可重构MIMO的真实研究边界 第一次看到“可重构MIMO性能增益理论分析”这个标题,很多人会下意识觉得这又是一篇堆公式的纯理论文章。但真正读过这类文献的人会知道,标题里每一个词都对应着具体的工程约束和设计取舍。我打算把这篇阅读笔记背…

2026/10/18 10:50:51 阅读更多 →
综合能源系统优化调度实战:Cplex求解冷热电联供与碳交易模型

综合能源系统优化调度实战:Cplex求解冷热电联供与碳交易模型

做综合能源系统优化的朋友,对这个方向肯定不陌生。冷、热、电、气四类能量在园区或建筑层面耦合起来,燃气轮机发电、余热回收制冷制热、不足的部分用电或燃气补充,再叠加上需求响应和碳交易这两个市场化机制——这基本就是当前综合能源系统优…

2026/10/18 10:50:51 阅读更多 →
SSM校园点餐系统本地部署与权限状态机实战指南

SSM校园点餐系统本地部署与权限状态机实战指南

简介:这是一套基于SSM框架开发的校园在线点餐系统完整源码,面向Java初学者与Web开发入门者,适用于课程设计、毕业设计及小型校园O2O项目实践。系统采用前后端分离式结构,前台支持用户注册登录、购物车、订单管理与资讯浏览&#x…

2026/10/18 10:50:51 阅读更多 →
UE4渲染源管理实战:RenderTarget与SceneCapture的坑与解法

UE4渲染源管理实战:RenderTarget与SceneCapture的坑与解法

很多做UE4开发的朋友应该都有过这样的经历:辛辛苦苦搭好场景,最后卡在了“怎么把画面干净地取出来”这一步。无论是做分屏、做小地图、做屏幕后处理、做远程像素流,还是给外部程序提供视频源,本质上都在做同一件事——管理RenderS…

2026/10/18 10:50:51 阅读更多 →
光伏电站灰损治理:轨道式智能清洁机器人全栈方案

光伏电站灰损治理:轨道式智能清洁机器人全栈方案

做光伏电站的人都知道组件脏了要洗,但真正把“灰尘偷走多少度电”这笔账算清楚的人不多。业内把灰尘遮挡组件导致的发电损失叫“灰损”,听着专业,本质很简单:组件表面被蒙上一层灰,光线进不去,电池片出力直…

2026/10/18 10:49:51 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →