FFmpeg学习

发布时间 2023-07-27 10:48:04作者: 天叔

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命令封装