FFmpeg学习
FFmpeg是一个跨平台、开源的音视频处理工具,它可以对音视频进行转码、剪辑、合并、分离、解码、编码、过滤等处理操作。
基础知识
容器:即特定格式的多媒体文件,比如mp4
媒体流:表示时间轴上的一段连续数据,如一段声音数据,一段视频数据或一段字幕数据,可以是压缩的,也可以是非压缩的
数据帧/包:一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应编码器的最小处理单元。一般情况下,帧对应压缩前的数据,包对应压缩后的数据
编码器:以帧为单位实现压缩数据和原始数据之间的相互转换的
复用:把不同的流按照某种容器规则放入容器
解复用:把不同的流从某种容器中解析出来
ffmpeg/ffplay/ffprobe区别
ffmpeg:超快音视频编码器
ffplay:简单媒体播放器
ffprobe:简单多媒体流分析器
他们之间部分参数通用,部分参数不通用,在使用时需要注意
FFmpeg流程
FFmpeg模块
基本组成包括AVFormat、AVCode、AVFilter、AVDevice、AVUtil、swscale、swresample
AVFormat:实现了目前多媒体领域绝大多数媒体封装格式,包括封和解封
AVCode:对媒体格式文件做编码与解码工作
AVFilter:提供了一个通用的音频、视频、字幕等滤镜处理框架
swscale:提供了高级别的图像转换API,例如进行图像缩放和像素格式转换
swresample:提供了高级别的音频重采样API
FFmpeg命令分类
ffmpeg查询例子:ffmpeg -muxers | findstr
ffplay播放控制
1:执行ffplay xxx(中间可加参数,详细看下方),打开视频
2:在视频中按以下选项键,可进行对应操作
ffplay播放基本参数
ffplay播放高级参数
ffplay命令播放
ffplay简单过滤器
ffpmeg命令参数
例子:ffmpeg -i "xxx.mp4" -b:a 192k -ar 96000 test.mp4
ffmpeg命令提取音视频
ffmpeg命令提取PCM数据
ffmpeg命令封装
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库