欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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函数
内容:实现包含界面的视频播放器FFmpeg
将视频和音频打包成一个文件,解封装格式->音频压缩数据->音频解码->音频采样数据;
解封装格式->视频压缩数据->视频解码->视频像素数据
音视频同步

    工具
  • 常用播放器:
  • 跨平台(非DirectShow框架):
    VLC;Mplayer,ffplay…
    Windows系列(DirectShow框架):
    完美解码,中级解码,暴风影音。。。
  • 信息查看工具:
  • 综合信息查看:
    MediaInfo
    二进制信息查看:
    UltraEdit
  • 单项详细分析
  • 封装格式:Elecard Format Analyzer
    视频编码数据:Elecard Stream Eye
    视频像素数据:YUV PLAYER
    音频像素数据:Adobe Audition