RTC
直播:推流/拉流
短视频:UGC/播放器
ffmpeg
ffplay
ffprobe
音频
视频
文本
graph LR;
输入----->处理;
处理----->输出;
graph LR;
采集---->前处理---->编码---->存储/传输;
采集 = 输入
前处理 + 编码 = 处理
存储/传输 = 输出
graph LR;
存储/传输---->解码---->后处理---->播放;
存储/传输 = 输入
解码 + 后处理 = 处理
播放 = 输出
为什么叫数据格式,跟工程上常说的数据结构有什么异同
原始数据
编码后数据
容器封装/流媒体协议
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];
我是小白,你说的 xxx 是啥?它咋用?
ffmpeg -h full
ffmpeg -formats
##### 复用器
ffmpeg -muxers
##### 解复用器
ffmpeg -demuxers
##### 解/复用器 help 指定查询
ffmpeg -h muxer=mp4
ffmpeg -h demuxer=mp4
ffmpeg -codecs
##### 解码器
ffmpeg -decoders
##### 编码器
ffmpeg -encoders
##### 编解码 help 指定查询
ffmpeg -h decoder=h264
ffmpeg -h encoder=libx264
有哪些过滤器
ffmpeg -filters
##### 过滤器 help 指定查询
ffmpeg -h filter=gblur
有哪些像素格式
ffmpeg -pix_fmts
有哪些声道
ffmpeg -layouts
有哪些采样率
ffmpeg -sample_fmts
有哪些颜色
ffmpeg -colors
etc.
# 设备
ffmpeg -devices
# bit流 filter
ffmpeg -bsfs
# 协议
ffmpeg -protocols
# 编译配置
ffmpeg -buildconf
查询 avfoundation 用法
ffmpeg -h full | grep avfoundation
,无返回ffmpeg -formats | grep avfoundation
,命中,D avfoundation AVFoundation input device
为解复用器ffmpeg -h demuxer=avfoundation
查询 overlay 用法
h264 / mp3 / yuv420p etc.