FFmpeg+SDL---视音频基础知识以及相关工具使用

一章:视音频基础知识

在阅读这章节之前建议先读:FFmpeg+SDL-----学习大纲

目录

• 前言
• 视频播放器原理:处理的流程,并对流程展开挨个介绍
• 封装格式(MP4,RMVB,TS,FLV,AVI)
• 视频编码数据(H.264,MPEG2,VC-1)
• 音频编码数据(AAC,MP3,AC-3)
• 视频像素数据(YUV420P,RGB):送到显卡进行显示的数据
• 音频采样数据(PCM)
• 练习

视频播放器原理,播放一个视频文件的流程:

FFmpeg+SDL---视音频基础知识以及相关工具使用_第1张图片
封装格式的作用:把视频和音频打包起来,合成一个文件来传,解封装将他们分离开。
解码:生成显示器可以识别的数据。

开发学习过程中常用的一些常用可视化工具:

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

MediaInfo

如下图所示:打开一个mkv文件,显示视频相关的综合信息、视频长度、音频、视频编码、像素、帧率、采样率等
FFmpeg+SDL---视音频基础知识以及相关工具使用_第2张图片

封装格式

1、封装格式的作用:视频码流和音频码流按照一定的格式存储在一个文件中。
2、封装格式分析工具:Elecard Format Analyzer
FFmpeg+SDL---视音频基础知识以及相关工具使用_第3张图片
MPEG2-TS格式简介
不包含文件头。数据大小固定(188Byte)的TS Packet构成,将包一个一个送入到有线电视网络中出传输,这种格式的优点是没有文件头,即便是前面或者后面出错了,也可以正常播放视频。
在这里插入图片描述
FLV格式简介
包含文件头。数据由大小不固定的Tag构成,头文件一旦损坏就无法播放。
在这里插入图片描述

视频编码数据

1、视频编码的作用: 将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。
2、视频编码分析工具: Elecard Stream Eye
FFmpeg+SDL---视音频基础知识以及相关工具使用_第4张图片
下发是操作的界面,上面是对应的那一帧的数据,所有的视频都被换分成网格状的间隔,这个就是编码的基本单元,网格里面还有小网格,是判断这块比较复杂,复杂的话还会进行更细的编码。

红色的帧:I帧(直接压缩,不依赖其他的图像);蓝色的帧:P帧;绿色的帧:B帧,线条表示的是运动矢量。
3、视频编码格式:
FFmpeg+SDL---视音频基础知识以及相关工具使用_第5张图片
4、H.264格式简介

  • 数据由大小不固定的NALU构成
  • 最常见的情况下,1个NALU存储了1帧画面的压缩编码后的数据
    在这里插入图片描述

5、H.264压缩方法

  • 比较复杂。包含了帧内预测、帧间预测、熵编码、环路滤波等环节构成。本课程不对其中的算法做过多介绍。
  • 可以将图像数据压缩100倍以上。

音频编码数据

1、音频编码的作用: 将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。(音频编码没有视频编码重要,因为音频数据没有视频数据那么大)
FFmpeg+SDL---视音频基础知识以及相关工具使用_第6张图片
2、音频编码分析工具: 暂不涉及。
3、AAC格式简介: 数据由大小不固定的ADTS构成
在这里插入图片描述
4、AAC压缩方法

  • 比较复杂。本课程不对其中的算法做过多介绍。
  • 可以将音频数据压缩10倍以上。

视频像素数据

想完整的了解这方便的知识可以阅读:矢量图、位图、点阵、RGB、YUV
1、视频像素数据作用: 保存了屏幕上每个像素点的像素值。
2、格式: 常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,YUV444P等。压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P。
3、特点: 视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:

3600*25*1920*1080*3=559.9GByte				// PS:这里假定帧率为25Hz,取样精度8bit。

4、YUV格式像素数据查看工具: YUV Player
5、RGB格式简介:

  • Red、Green、Blue三种颜色,可以混合成世界上所有的颜色。
  • 彩色图像中每个点,由R、G、B三个分量组成。
  • 以RGB24为例,图像像素数据的存储方式如下:
    FFmpeg+SDL---视音频基础知识以及相关工具使用_第7张图片
    ps:BMP文件中存储的就是RGB格式的像素数据。

YUV格式简介

相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,并对色度信息采用更“狠”一点的压缩方案,从而提高压缩效率。
FFmpeg+SDL---视音频基础知识以及相关工具使用_第8张图片
YUV数据查看工具: YUVPlayer

音频采样数据

1、音频采样数据作用: 保存了音频中每个采样点的值。我们看到的那种浮动的波形是模拟数据无法在电脑上显示的,所以就需要采样。
2、特点: 音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:
4 * 60 * 44100 * 2 * 2=42.3MByte
PS:这里假定采样率为44100Hz(人耳只能听到这个一半),采样精度为16bit。
3、音频采样数据查看工具: Adobe Audition
FFmpeg+SDL---视音频基础知识以及相关工具使用_第9张图片
4、PCM格式简介
▫ 单声道的情况下按照顺序存储每个采样点的数据(看上图像是一段连续的弧线,但是无线的放大实际上是很多离散的采样到的点)。
▫ 双声道的情况下按照“左右、左右”的顺序存储每个采样点两个声道的数据。
在这里插入图片描述

你可能感兴趣的:(FFmpeg+SDL)