文章目录
录制的大概流程
摄像头 采集到图像帧 一帧一张静态的图片 帧数就是在1秒钟时间里传输的图片的量
一秒的图片 可能有25张甚至更多 如果一张的大小是3m 那么一秒的视频量可能就有75m左右 这样的量很大 需要进行图像处理 放入图像帧队列 视频编码的主要作用是把图片进行一个压缩处理 压缩后成为一个视频包队列 进行保存
麦克风也是一样的流程
用pcm来保存 采集回来的pcm数据 音频是按照采集点来计算的 比如说 一秒去采样44k的采集点 如何用最少的采集点 去完成最完整的数据的保存 完全去采集也可以 但是可能会造成较大的延迟 比如20ms 去做一帧的压缩
时钟的作用 是用来保证音画同步的 共用同一个数据源来播放数据 才能做到音画同步
播放的大概流程
和刚才的录制是相反的 说明 播放是录制的反向的过程
经过解复用器 解析出音频包队列 和 视频包队列 通过音视频解码器 将包解析 成采样帧对队列 和 图像帧队列 在经过同步控制 进行音频处理 图像处理 在扬声器 和 显示器中进行同步播放播放
视频的主要概念
- 视频码率:kb/s 指的是视频文件在单位时间内使用的数据流量 ,也叫做码流率。码流越大。说明单位时间内取样率越大,数据流的精度越高
- 视频帧率:fps,通常说一个视频的25帧。就是视频每秒会显示25张图画,帧率越高,给人的感觉就越流畅。
- 视频分辨率:分辨率就是常说的分辨率,分辨率越高,我们能看到的画面越精细
I帧(Intra coded frames)
- I 帧: I帧不需要参考 其他画面而生成,解码的时候 仅靠直接就重构完整的图像;
- I帧图像采用帧内编码的方式
- I帧所占数据的信息量比较大
- I帧图像是周期性出现在图像序列中的 ,出现频率可有编码器选着
- I帧是P帧和B帧的参考帧(其质量直接影响到同组以后各帧的质量)
- I帧是帧组GOP(一组连续的画面)中的基础帧,在一组中只有一个I帧
- i帧不需要考虑运动矢量
P (Predicted frames)帧
根据本帧与其相邻的前一帧(I帧或者P帧)的不同点来压缩本帧数据
,同时利用了空间和时间上的相关性。
p帧属于向前预测的帧间编码。它需要参考前面最靠近它的I帧或P帧来解码
B(Bi-directional predicted frames)帧
B帧图像采用双向时间预测,可以大大提高压缩倍率
音频常见概念
- 比特率: 每秒传输的bit数,单位为:bps(bit Per Second)
间接衡量声音质量
的一个标准。
没有压缩的音频数据的比特率 = 采样频率 * 采样精度 * 通道数 - 码率: 压缩后的音频数据的比特率 。常见的码率:
96kbps: FM质量 —广播质量
128-160kbps:一般质量音频
192kbps ; CD质量
256-320kbps:高质量音频
码率越大,压缩效率越低,音质越好,压缩后数据越大
码率 = 音频文件大小/时长。
比如 采样频率44100,采样精度16bit,2通道(声道),采集4分钟的数据
44100162460 =338688000bit
大约40m字节
比特率是 44100 * 16 * 2
帧:每次编码的采样单元数,比如MP3 通常是1152个采样点,AAC通常是1024个取样点作为一个编码单元。
帧长:
- 指的是每帧播放的持续时间: 每帧播放时间 = 每帧采样点数 / 采样频率
比如 mp3 48k 1152个采样点 每帧则为 24毫秒
1152/48000 = 0.024 = 24 毫秒 - 可以指压缩后每帧的数据长度
讲到帧的时候 注意它的场合
数据帧信号的存储方式
- 交错模式:数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧1左声道 样本 和右声道样本,再开始帧2的记录
- 非交错模式:首先记录的是一个周期内所有帧的左声道样本 ,再记录所有的右声道样本
数字音频信号如果不压缩直接传送将会占用极大的代码 ,
1M代码在阿里云服务器的价格就是100元/月
需要对音频进行压缩减少音频数据的带宽占用
数字音频压缩编码在保证听觉不产生失真的前提下。对音频数据信号进行可能大的压缩,降低数据量。数字音频压缩编码采取去除声音信号中冗余成分
的方法来实现。
冗余成分:不能被人耳感知的信号,它们对确定声音的音色 音调等信息没有任何帮助
冗余信号的两个表现
频谱掩蔽效应 和 时域掩蔽效应
- 频谱掩蔽效应:当声音小于某个阈值后 人耳会听不见 不同频率的声音阈值不一样
- 时域掩蔽效应 强音和弱音同时出现的时候 一般弱音会被掩盖掉
这些因为各种机制被掩盖掉 被忽略掉的信号 就叫做冗余信号
编码方案 和实现方式
对于每一个音频声道中的音频采样信号:
1:可通过子带滤波器去映射从时域到频域的。每个声道中的音频采样块首先要根据心理声学模型来计算掩蔽门限值
2:由计算出来的掩蔽门限值来决定从公共比特池中分配该声道不同频率域多少比特数,接下来进行量化以及编码操作
3:将控制参数 及辅助数据加入数据之中 ,产生编码后的数据流。
封装格式的概念
封装格式 也叫做容器
就是将已经编码压缩号的视频流,音频流及字幕按照一定的方案放到一个文件中,便于播放软件去播放
视频文件的后缀名就是它的封装格式
封装格式不一样 后缀名不一样
同样的音视频流可以用不同的容器来承载
H264 +AAC封装为FLV或MP4是最流行的模式
音视频同步概念
DTS(Decoding Time Stamp)
: 即解码时间戳,这个时间戳的意义在于告诉播放器什么时候应该解码这一帧的数据。
PTS(Presentation Time Stamp)
:即显示时间戳,这个时间戳用来告诉播放器应该在什么时间 显示这一帧数据
音视频同步方式:
1: Audio Master :同步视频到音频
2: Video Master: 同步音频到视频
3: External Clock Master :同步音频和视频到外部时钟
一般情况下 1 》 3 》 2 选择同步的方式