FFmpeg
程序员文章站
2024-03-18 16:43:34
...
视音频基础格式
封装格式:(mp4,RMVB,TS,FLV,AVI):
视频码流和音频码流存储在一个文件中;
封装格式又称为容器;
MPEG-TS:不包含文件头,数据大小固定的TS Packet构成;
FLV:包含文件头,数据由大小不固定的Tag构成(文件头丢了视频就废了);
视频编码数据:(H.264 VC-1,MPEG2)
将视频像素数据(RGB,YUV)压缩成为视频码流,从而降低视频数据量
H.264格式简介:
数据由大小不固定的NALU构成;
最迟常见情况下,1个NALU存储了1帧画面的压缩编码后的数据;
H.264压缩方法:
1.比较复杂,包含了帧内预测,帧间预测,熵编码、环路滤波等环节;
2.可以将图像数据压缩100倍以上;
音频编码数据:(AAC,MP3,AC-3);
将音频采样数据压缩成为音频码流,从而降低音频数据量;
数据由大小不固定的ADTS构成;
压缩方法复杂,可将音频数据压缩10倍以上
视频像素数据(YUV420p,RGB);
作用:保存屏幕上每个像素点的像素值;
格式:常见的像素数据如RGB24,RGB32,YUV22p,YUV44p等。压缩编码中一般
使用的是YUV格式的像素数据,常用数据格式为YUV420p;
特点:视频像素数据体积很大,一般一小时高清RGB24
格式数据体积为
3600*25*1920*1080=559.9G;假设帧25hz,取样精度8bit;
RGB格式
RGB24依次存储了每个像素点的R、G、B信息;
PS:BMP文件中存储的就是RGB格式的像素数据
YUV
人眼对亮度敏感,对色度不敏感;将亮度和色度信息分离,并对色度信息采用更狠一点的压缩方案,从而提高压缩效率;
音频采样数据(PCM)
保存了音频中每个采样点的值;
单声道按照顺序播放;
双声道按照左右左右顺序存储
1.FFmpeg:视频解码器
实现:H.264->YUV
目的:掌握FFmpeg解码视频函数
2.视频显示(SDL)
目的:掌握SDL显示视频函数
内容:实现:YUV->电脑屏幕
3.视频播放器(FFmpeg+SDL)
目的:整合FFmpeg和SDL的函数,实现一个简单的播放器
内容:实现:H.264->YUV->电脑屏幕
4.视频播放器-图像界面版
目的:学习MFC函数
内容:实现包含界面的视频播放器
将视频和音频打包成一个文件,解封装格式->音频压缩数据->音频解码->音频采样数据;
解封装格式->视频压缩数据->视频解码->视频像素数据
音视频同步
- 工具
- 常用播放器: 跨平台(非DirectShow框架):
- 信息查看工具: 综合信息查看:
- 单项详细分析 封装格式:Elecard Format Analyzer
VLC;Mplayer,ffplay…
Windows系列(DirectShow框架):
完美解码,中级解码,暴风影音。。。
MediaInfo
二进制信息查看:
UltraEdit
视频编码数据:Elecard Stream Eye
视频像素数据:YUV PLAYER
音频像素数据:Adobe Audition
推荐阅读
-
FFmpeg
-
14、Win10编译ffmpeg4.2.1(For Windows)
-
windows系统下编译FFmpeg最新版本
-
FFmpeg4.2.2最新版本编译、RTMP编译
-
使用FFmpeg设置视频文件的详细信息
-
ffmpeg 多张图片转视频
-
Centos7.0下编译安装FFmpeg4.0.2 博客分类: 音视频 centosFFmpegyasmsdl2libx264
-
ffmpeg 视频格式转换 博客分类: ffmpeg ffmpeg
-
ffmpeg安装过程 博客分类: PHPLiunxShell ffmpeg
-
[ffmpeg]记录一下编译ffmpeg过程中的踩坑 博客分类: 视频编解码 ffmpeg