ffmpeg整体学习框架.md 3.9 KB

ffmpeg学习框架

三大场景

RTC

直播:推流/拉流

短视频:UGC/播放器

三大工具

ffmpeg

ffplay

ffprobe

媒体类型

音频

视频

文本

通用流程

graph LR;
    输入----->处理;
    处理----->输出;
graph LR;
    采集---->前处理---->编码---->存储/传输;

采集 = 输入

前处理 + 编码 = 处理

存储/传输 = 输出

graph LR;
    存储/传输---->解码---->后处理---->播放;

存储/传输 = 输入

解码 + 后处理 = 处理

播放 = 输出

数据格式

为什么叫数据格式,跟工程上常说的数据结构有什么异同

原始数据

编码后数据

容器封装/流媒体协议

ffmpeg整体框架

graph LR;
    视频---->视频输入;
    视频输入---->采集;
    采集---->模拟/测试/null;
    采集---->摄像头;
    采集---->屏幕;
    视频输入---->文件input[文件];
    文件input[文件]---->抓包文件;
    文件input[文件]---->常见多媒体文件input[常见多媒体文件];
    视频输入---->流式input[流式];
    流式input[流式]---->协议input[rtp/rtmp/hls];
    视频---->视频处理;
    视频---->视频输出;
    视频输出---->播放;
    视频输出---->文件output[文件];
    文件output[文件]---->常见多媒体文件output[常见多媒体文件];
    视频输出---->流式output[流式];
    流式output[流式]---->协议output[rtp/rtmp/hls];
graph LR;
    音频---->音频输入;
    音频输入---->采集;
    采集---->模拟/测试/null;
    采集---->麦克风;
    音频输入---->文件input[文件];
    文件input[文件]---->抓包文件;
    文件input[文件]---->常见多媒体文件input[常见多媒体文件];
    音频输入---->流式input[流式];
    流式input[流式]---->协议input[rtp/rtmp/hls];
    音频---->音频处理;
    音频---->音频输出;
    音频输出---->播放;
    音频输出---->文件output[文件];
    文件output[文件]---->常见多媒体文件output[常见多媒体文件];
    音频输出---->流式output[流式];
    流式output[流式]---->协议output[rtp/rtmp/hls];

ffmpeg百宝箱 - help命令

img_7.png

我是小白,你说的 xxx 是啥?它咋用?

help 有哪些?

  1. 帮助文档

img_10.png

ffmpeg -h full
  1. 有哪些解/复用器

img_8.png

ffmpeg -formats

##### 复用器
ffmpeg -muxers

##### 解复用器
ffmpeg -demuxers

##### 解/复用器 help 指定查询
ffmpeg -h muxer=mp4
ffmpeg -h demuxer=mp4
  1. 有哪些编解码器

img_9.png

ffmpeg -codecs

##### 解码器
ffmpeg -decoders

##### 编码器
ffmpeg -encoders

##### 编解码 help 指定查询
ffmpeg -h decoder=h264
ffmpeg -h encoder=libx264
  1. 有哪些过滤器

    ffmpeg -filters
    
    ##### 过滤器 help 指定查询
    ffmpeg -h filter=gblur
    
  2. 有哪些像素格式

    ffmpeg -pix_fmts
    
  3. 有哪些声道

    ffmpeg -layouts
    
  4. 有哪些采样率

    ffmpeg -sample_fmts
    
  5. 有哪些颜色

    ffmpeg -colors
    
  6. etc.

    # 设备
    ffmpeg -devices
    
    # bit流 filter
    ffmpeg -bsfs
    
    # 协议
    ffmpeg -protocols
    
    # 编译配置
    ffmpeg -buildconf
    

help 示例

  1. 查询 avfoundation 用法

    1. 确定avfoundation是什么? ffmpeg -h full | grep avfoundation,无返回
    2. 那它是复用器吗?ffmpeg -formats | grep avfoundation,命中,D avfoundation AVFoundation input device 为解复用器
    3. 查询用法 ffmpeg -h demuxer=avfoundation
  2. 查询 overlay 用法

    1. 确定avfoundation是什么? ffmpeg -h full | grep overlay,命中 > img_6.png
    2. 从结果中可知overlay是视频滤镜,查询用法 ffmpeg -h filter=overlay
  3. h264 / mp3 / yuv420p etc.

got nothing???

  1. 官方文档
  2. gpt 走起