## ffmpeg学习框架 ### 三大场景 RTC 直播:推流/拉流 短视频:UGC/播放器 ### 三大工具 ffmpeg ffplay ffprobe ### 媒体类型 音频 视频 文本 ### 通用流程 ```mermaid graph LR; 输入----->处理; 处理----->输出; ``` ```mermaid graph LR; 采集---->前处理---->编码---->存储/传输; ``` 采集 = 输入 前处理 + 编码 = 处理 存储/传输 = 输出 ```mermaid graph LR; 存储/传输---->解码---->后处理---->播放; ``` 存储/传输 = 输入 解码 + 后处理 = 处理 播放 = 输出 ### 数据格式 为什么叫数据格式,跟工程上常说的数据结构有什么异同 原始数据 编码后数据 容器封装/流媒体协议 ### ffmpeg整体框架 ```mermaid graph LR; 视频---->视频输入; 视频输入---->采集; 采集---->模拟/测试/null; 采集---->摄像头; 采集---->屏幕; 视频输入---->文件input[文件]; 文件input[文件]---->抓包文件; 文件input[文件]---->常见多媒体文件input[常见多媒体文件]; 视频输入---->流式input[流式]; 流式input[流式]---->协议input[rtp/rtmp/hls]; 视频---->视频处理; 视频---->视频输出; 视频输出---->播放; 视频输出---->文件output[文件]; 文件output[文件]---->常见多媒体文件output[常见多媒体文件]; 视频输出---->流式output[流式]; 流式output[流式]---->协议output[rtp/rtmp/hls]; ``` ```mermaid graph LR; 音频---->音频输入; 音频输入---->采集; 采集---->模拟/测试/null; 采集---->麦克风; 音频输入---->文件input[文件]; 文件input[文件]---->抓包文件; 文件input[文件]---->常见多媒体文件input[常见多媒体文件]; 音频输入---->流式input[流式]; 流式input[流式]---->协议input[rtp/rtmp/hls]; 音频---->音频处理; 音频---->音频输出; 音频输出---->播放; 音频输出---->文件output[文件]; 文件output[文件]---->常见多媒体文件output[常见多媒体文件]; 音频输出---->流式output[流式]; 流式output[流式]---->协议output[rtp/rtmp/hls]; ``` ### ffmpeg百宝箱 - help命令 TODO