c++基于ffmpeg和QT

 一、 音视频基础知识

一、封装、解码、重采样、像素格式

1.1音频预知识

菜鸟也能懂的-音频基础知识https://www.jianshu.com/p/614b3e6e641a(约两个多点)建议仔细看完

音视频编解码知识学习详解(分多部分进行详细分析)http://xpp02.iteye.com/blog/1784890 (好文 真的详细)

[总结]FFMPEG视音频编解码零基础学习方法https://blog.csdn.net/leixiaohua1020/article/details/15811977

1.1.1视频相关专业术语

(1)视频
连续的图象变化每秒超过24帧(Frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的画面叫做视频。r


(2)帧(Frame):
是影像中常用的最小单位,相当于电影中胶片的每一格镜头,一帧就是一副静止的画面,连续的帧就形成了视频。

(3)帧速率(FPS):
每秒钟所传输图片的个数,也可以理解为处理器每秒刷新的次数,通常用FPS标识,当然帧数越高,画面也就越流畅。

(4)转码
指将一段多媒体包括音频、视频或者其他的内容从一种编码格式转换成为另外一种编码格式。
(原视频 -- 解码 -- 像素数据 -- 编码 -- 目标视频

(原音频 -- 解码 -- 音频数据 -- 编码 -- 目标音频)

(5)视频编码
讲到视频编码,大家可能都会问为什么视频要编码?
--- 要知道,采集的原始音视频信号体积都非常大,里面有很多相同的、眼看不到的、耳听不到的内容,比如,如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。

--- 专业的来说,视频编码也就是文件当中的视频所采用的压缩算法,视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。

(6)视频解码:
有了编码,当然也需要有解码。
因为压缩(编码)过的内容无法直接使用,使用(观看)时必须解压缩,还原为原始的信号(比如视频中某个点的颜色等),这就是“解码“或者”解压缩“。

(7)采样频率:
指录音设备在一秒钟内对声音信号的采样次数,它用赫兹(Hz)来表示,比如44.1KHz采样率的声音就是要花费44000个数据点来描述1秒钟的声音波形。原则上采样率越高,声音质量越好。

数字音频领域,常用的采样率有:

**(8)采样位数: **
表示了计算机度量声音波形幅度(音量)的精度,就是通常所说的声卡的位数。

就像表示颜色的位数一样(8位表示256种颜色,16位表示65536种颜色),有8位,16位,24位等。这个数值越大,解析度就越高,录制和回放的声音就越真实。

每一个采样点都需要用一个数值来表示大小,这个数值的数据类型大小可以是:8bit、16bit、32bit 等等,位数越多,表示得就越精细,声音质量自然就越好,而数据量也会成倍增大。我们在音频采样过程中常用的位宽是 8bit 或者 16bit。

(9)比特率(码率):
表示单位时间(1秒)内传送的比特数,一般我们用的单位是kbps,其英文是 Kilobits per second,意即“千位每秒”(根据发音亦译作“千比特每秒”),意思是说每过一秒钟,有多少千比特的数据流过,因此码率也经常被称为“比特率”。

--- 音频中 码率:就是音频文件或者音频流中1秒中的数据量,如1.44Mbps,就是1秒钟内的数据量1.44Mbits 。 码率越高,传送的数据越大,音质越好,
声音比特率 = 采样率(Hz) x 采样位数(bit) x 声道数.

--- 视频中 码率:原理与声音中的相同,都是指由模拟信号转换为数字信号后,单位时间内的二进制数据量,通俗来讲就是把每秒显示的图片进行压缩后的数据量。
视频比特率(位/秒)= (画面尺寸彩色位数(bit)帧数)**

假设有一张标准音乐CD光盘容量是746.93MB(注意大B是字节,小b是位。一字节(B)等于8位(b)。)

CD音频是以采样率为44.1KHZ,采样位数为16位,左右双声道(立体声)进行采样的。而一张标准CD光盘的时长是74分钟。

那么容量计算公式为:(44100 x 16 x 2)/8 x (74 x 60)=783216000字节 转为MB为 783216000/1024/1024=746.93MB(兆字节)

(9)场频:
场频又称为刷新频率,即显示器的垂直扫描频率,指显示器每秒所能显示的图象次数,单位为赫兹(Hz)。

一般在60-100Hz左右 场频也叫屏幕刷新频率,指屏幕在每秒钟内更新的次数。

人眼睛的视觉暂留约为每秒16-24次左右,因此只要以每秒30次或更短的时间间隔来更新屏幕画面,就可以骗过人的眼睛,让我们以为画面没有变过。

实际上每秒30次的屏幕刷新率所产生的闪烁现象我们的眼睛仍然能够察觉从而产生疲劳的感觉。所以屏幕的场频越高,画面越稳定,使用者越感觉舒适。

另外:荧光屏上涂的是中短余辉荧光材料,如果电子枪不进行不断的反复“点亮”、“熄灭”荧光点 的话,就会导致图像变化时前面图像的残影滞留在屏幕上。

一般屏幕刷新率场频在每秒75次以上人眼就完全觉察不到了,所以建议场频设定在75Hz-85Hz之间,这足以满足一般使用者的需求了。

场频越大,图象刷新的次数越多,图象显示的闪烁就越小,画面质量越高。注意,这里的所谓“刷新次数”和我们通常在描述游戏速度时常说的“画面帧数”是两个截然不同的概念。后者指经电脑处理的动态图像每秒钟显示显像管电子枪的扫描频率。

场频与图像内容的变化没有任何关系,即便屏幕上显示的是静止图像,电子枪也照常更新。扫描频率过低会导致屏幕有明显的闪烁感,即稳定性差,容易造成眼睛疲劳。早期显示器通常支持60Hz的扫描频率,但是不久以后的调查表明,仍然有5%的人在这种模式下感到闪烁,因此VESA组织于1997年对其进行修正,规定85Hz逐行扫描无闪烁的标准场频。

1.1.2视频的构成

一个完整的视频文件是由音频和视频2部分组成的,而视音频又是由封装格式和编码格式构成,我们在表面看到的如AVI、RMVB、MKV、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准,一个外壳。

外壳里面核心还有一层是编码文件,编码文件经过封装后,才成为我们现在看到的.mp4 .avi等视频。如H.264、mpeg-4等就是视频编码格式, MP3、AAC等就是音频编码格式。

例如:将一个H.264视频编码文件和一个MP3视频编码文件按AVI封装标准封装以后,就得到一个AVI后缀的视频文件,这个就是我们常见的AVI视频文件了。

部分技术先进的容器还可以同时封装多个视频、音频编码文件,甚至同时封装进字幕,如MKV封装格式。MKV文件可以做到一个文件包括多语种发音、多语种字幕,适合不同人的需要。

1,封装格式

 (1)封装格式(也叫容器)就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,可以把它当成一个放视频轨和音频轨的文件夹也可以。
 (2)通俗点说视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。
 (3)封装格式和专利是有关系的,关系到推出封装格式的公司的盈利。
 (4)有了封装格式,才能把字幕,配音,音频和视频组合起来。
 (5)常见的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件都指的是一种封装格式。

举例MKV格式的封装:

2,编码格式

编码格式指的是对封装格式中视频流数据的压缩编码方式的一种描述。
视频不进行压缩的话,体积会非常大。

视频压缩,主要压缩了哪些东西:
空间冗余:图像相邻像素之间有较强的相关性
时间冗余:视频序列的相邻图像之间内容相似
编码冗余:不同像素值出现的概率不同
视觉冗余:人的视觉系统对某些细节不敏感
知识冗余:规律性的结构可由先验知识和背景知识得到

常见的编码格式有以下
视频编码格式:

音频编码格式:


国际上制定视频编解码技术的组织有两个:
1,“国际标准化组织(ISO)” 它制定的标准有MPEG-1、MPEG-2、MPEG-4 等。
视频编码:
**(1)MPEG-1 : **
制定于1993年,较早的视频编码,质量比较差,它是为CD光盘介质定制的视频和音频压缩格式。

主要用于 CD-ROM 存储视频,国内最为大家熟悉的就是 VCD(Video CD),他的视频编码就是采用 MPEG-1。

MPEG-1的压缩算法可以把一部 120 分钟长的电影(原始视频文件)压缩到1.2 GB左右大小.(*.dat格式的文件)

MPEG-1音频分三层,就是MPEG-1 Layer I, II, III,其中第三层协议也就是MPEG- 1 Layer 3,简称MP3。MP3目前已经成为广泛流传的音频压缩技术。

缺点:

  • 1个音频压缩系统限于两个通道(立体声)
  • 没有为隔行扫描视频提供标准化支持,且压缩率差
  • 只有一个标准化的“profile” (约束参数比特流),不适应更高分辨率的视频。MPEG - 1可以支持4k的视频,但难以提供更高分辨率的视频编码并且标识硬件的支持能力。
  • 支持只有一个颜色空间,4:2:0。

**(2)MPEG-2 : **
制定于1994年,通常用来为广播信号提供视频和音频编码, 包括卫星电视、有线电视等。MPEG-2经过少量修改后,也成为DVD产品的内核技术。

使用MPEG-2的压缩算法制作一部 120 分钟长的电影(原始视频文件)在4GB到8GB大小左右.(*.vob格式的文件)

** (3)MPEG-3 :**原本目标是为高解析度电视(HDTV)设计,随后发现MPEG-2已足够HDTV应用,故 MPEG-3的研发便中止。

** (4)MPEG-4 : **公布于1998年,为了应对网络传输等环境,传统的 MPEG-1/2 已经不能适应,所以促使了 MPEG-4 的诞生,
MPEG-4,主要用途在於網上流媒体、光碟、 語音傳送(視訊電話),以及電視廣播。

MPEG-4 不仅是针对一定比特率下的视频、音频编码,更加注重了多媒体系统的交互性和灵活性。利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量。

MPEG-4代表了基于模型/对象的第二代压缩编码技术,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。

2,“国际电联(ITU-T)” 它制定的标准有H.261、H.263、H.263+ 等。
视频编码:
** (1)H.261 : **
约1990年制定,是最早的运动图像压缩标准,它详细制定了视频编码的各个部分, 主要在老的视频会议和视频电话产品中使用,它是第一个实用的数字视频编码标准。

H.261的设计相当成功,之后的视频编码国际标准基本上都是基于 H.261相同的设计框架,包括 MPEG-1,MPEG-2/H.262,H.263,甚至 H.264 。

** (2)H.263 : **
约1996年制定 H.263的编码算法与H.261一样,但做了一些改善和改变,以提高性能和纠错能力。

** (3)H.264:**
H.264等同于MPEG-4的第10部.

H.264/AVC是两大组织集合H.263+和Mpeg4的优点联合推出的最新标准,更高的数据压缩比。在同等的图像质量条件下,H.264的数据压缩比能比H.263高2倍,比MPEG-4高1.5倍, 举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1。

(ITU-T给这个标准命名为H.264(以前叫做H.26L), 而ISO/IEC称它为MPEG-4 AVC 高级视频编码(Advanced Video Coding,AVC),并且它将成为MPEG-4标准的第10部分)

从H.261视频编码建议,到H.262/3、MPEG-1/2/4等都有一个共同的不断追求的目标,即在尽可能低的码率(或存储容量)下获得尽可能好的图像质量。

视频编码的发展历史

音频编码与封装格式介绍

PCM :是一种的很基本的编码方式,虽然简单,但是好用,它被称为无损编码,也就是模拟信号转成数字信号不压缩,只转换,就是经过话筒录音后直接得到的未经压缩的数据流,对于音频来说,CD就是采用PCM编码。

有损压缩格式:
** MP3(MPEG Audio Layer3) ** AAC (高级音频编码)  ** WMA (Windows Media Audio)

无损压缩格式:
WAV  FLAC  APE 


常见封装格式与编码格式的对应

1.3播放一个网络上视频需要的步骤

1,解协议:就是将流媒体协议的数据,解析为标准的相应的封装格式数据,这些协议在传输视音频数据的同时,也会传输一些信令数据,解协议的过程中会去除掉信令数据而只保留视音频数据。

2,解封装:就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。

3,解码:就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。
把压缩编码的视频数据,输出成为非压缩的颜色数据,例如YUV420P,RGB等等;
把压缩编码的音频数据,输出成为非压缩的音频抽样数据,例如PCM数据。

4,视音频同步:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出。

二、封装格式和编码格式

三、像素格式

四、PCM音频参数

五、MP4格式分析

https://www.cnblogs.com/yjg2014/p/6144977.html

猜你喜欢

转载自blog.csdn.net/idealhunting/article/details/83686152