目录
一、音视频基本原理
1、音视频的主要处理过程:
[1]. 采集。比如从客户端的摄像头、麦克风和本地原始文件等,获得基础的音视频数据;
[2]. 预处理。在这个阶段其实就是对音视频进行修剪操作,毕竟收集到的原始数据,不一定是想要在最后呈现的效果,因此在这里可能会进行美颜、裁剪、AI识别处理、声音A3处理等;
[3]. 编码。在经过预处理或者没处理过的原始文件,一般都会比较大,不适合进行传输,这个时候就需要进行压缩、转码之类的操作,减 少文件提交,然后再进行传输,执行编码的工具叫编码器,压缩数据的算法叫做编码格式;
[4]. 解码。压缩数据传输完之后,就需要解码成原始文件一样的数据才能使用,用来解码的工具就是解码器了,不过通常编码器和解码器 是一块的,统称为编解码器codec;
[5]. 渲染与展示。接收到原始数据文件之后,就可以通过硬件或者软件进行渲染与展示了,硬件例如显示器、音响等,软件有 SurfaceView;
[6]. 文件封装/解封装。其实从采集开始,音频和视频都是分开进行处理的,但是在进行传输的时候,我们需要同一套音频文件是在一块 的,所以需要进行一次文件封装。存放音视频的容器叫封装容器,文件类型叫封装格式;
[7]. 网络协议打包/解包。音视频文件在网络中传输的时候,一般都会有一个特定的协议,也就是流媒体协议。网络协议会将音视频数据文 件打包成协议包,通过网络协议端口发送出去,接收方接收到网络包之后,要通过网络协议解开协议包,才能获得音视频数据文件;
[8].抖动缓冲区(JitterBuffer)。网络抖动就是实际发(收)的数据没有发(收),判断是否抖动就是看丢包率是否增加、 往返时延 (RTT)是否增加、发送速率是否降低。 JitterBuffer就是为了减少网络抖动给音视频传输带来的影响而产生的,JitterBuffer是传输过程中的一个缓冲区,连接着解码器和网络协议
栈。JitterBuffer会有意地延迟音视频传输时间,将数据先缓存在缓冲区中,并且也会将之前缓存的数据发送到接收端,可以理解成我们在网上 看电视的时候的视频缓存,这样的话,即使出现了偶尔的网络抖动,也不会影响到用户的体验。
2、音视频主要参数及格式
视频参数