学习原因
最近在做 2D 视频转 3D 项目,发现自己需要视频拆解图像和把图像组装视频的工具,遂接触了 FFMPEG
学习资料
- 小破站FFmpeg最强教学: 讲解得很全面,从基础概念到各种参数含义和命令
- FFmpeg 最最强大的视频工具:精要的科普,给出了几个使用案例
- softshare官方频道的个人空间: 视频压制向的比较专业的科普
视频相关概念
- 容器:就是视频文件
- 数据帧(Frame): 压缩前的数据(画面)
- 数据包(Packet): 压缩后的数据(流),可以理解成 01 串
- Codec: encode + decode 编解码器,是 Frame 和 Packet 互转的工具
- 复用(Mux): 将流合成视频文件
- 解复用(Demux): 视频文件分解为流
- 帧率: 视频文件中一秒的帧数
- 码率: 又名比特率(Bitrate),指一秒钟处理的数据量大小(为多少比特)
个人的理解,视频文件就像一个文件夹,文件夹里面有三个压缩包,分别对应视频流,音频流和字幕流
三个压缩包各自有各自的压缩协议,比如有 zip,rar,7z 等,这些协议对应 Codec,每种格式的压缩包,只能用对应的解压算法,才能解压成功
视频流解压出来就是帧图像,我们才能在播放器看到
反过来讲,视频的压制,就是一帧帧图像选择一个压缩器比如 h264 压缩成压缩包,再把同样的音频压缩包一起放到一个容器里
视频处理流程
视频A -> 解复用 -> 视频流A
视频流A -> Codec解码 -> 图像帧A
图像帧A -> 图像处理(Filter) -> 图像帧B
视频流B <- 图像帧B
视频B <- 复用 <- 视频流B
查询命令(重要)
这是一个 mannual 手册功能,最有用
ffmpeg -h
- ffmpeg -h -long
- ffmpeg -h -full
- ffplay -h
- ffprobe -h
暂无评论