在以前的文章里,咱们说了很多关于音视频相关的内容,可是一直没有系统的来介绍视频通讯,接下来咱们将出一个系列关于视频通讯的文章。帮助你们对视频通讯有一个更全面的认识。系列文大纲以下:数据库
视频通讯采集
视频通讯处理
视频通讯编码与封装
视频通讯的传输与推流架构
今天给你们带来是咱们系列文章的第一篇《视频通讯采集》框架
视频通讯采集是视频通讯的第一步,采集主要包括两个方面:视频采集和音频采集。编码
视频主要是经过摄像头进行采集,这里面涉及到摄像头的相关操做以及摄像头的参数设置,因为各个厂商的摄像头存在差别,所以这方面也会有一些差别。音频则经过麦克风进行采集,不一样产品的麦克风对音频采样率的支持不一样。spa
摄像头、图像比例、兼容性等问题视频
麦克风、音频采样率、回声消除处理、缓冲区大小等问题接口
在iOS开发中,对音视频的采集均可以用<AVFoundation>框架。而Android开发主要是基于其C/S层架构,客户端提供调用接口,而实现工做则是在服务端完成。进程
视频中咱们看到的内容是由图片一张张组合连续播放而成。图像的采集过程主要由摄像头等设备拍摄成 YUV 的原始数据,而后通过编码器压缩成数据分发出去。图片
图像是一个视频内容的主要部分。图像采集时主要涉及到下面的参数:资源
图像格式:一般采用 YUV 格式存储原始数据信息,其中包含用 8 位黑白表示的灰度图,以及由 RGB 组合成的彩色图。
传输通道:正常状况下视频的拍摄只需 1 路通道,随着 3D、VR等技术的日渐成熟,为了拍摄一个360° 的视频,须要进行不一样角度的拍摄,而后通过多通道传输后合成。
分辨率:如今的设备屏幕尺寸的日益增多增大,视频采集过程当中原始视频分辨率就起着愈来愈重要的做用,由于后续处理环节中使用的全部视频分辨率的定义都以原始视频分辨率为基础。
采样频率:采样频率反映了采集卡处理图像的速度和能力。在进行高度图像采集时,须要注意采集卡的采样频率是否知足要求。采样率越高,图像质量越高,同时保存这些图像信息的数据量也越大。
以上,构成了一个视频采集的主要技术参数,而对于视频通讯开发者来讲,在了解这些细节后,有利于在实际开发中对采集环节中技术参数的控制,减小后续编码环节的压力。
图像的采集源有摄像头、屏幕录制等,视频通讯的采集源主要是摄像头,经过摄像头获取图像信息。这里简单说一下Android和iOS。
Android中不少基本的架构都是C/S层架构。Android Camera的架构也是C/S架构,service端为Client进程提供丰富的接口,使它能轻松得到Camera数据的地址,而后处理这些数据。可是在Android中调用摄像头须要相应的权限,并且权限申请在Android 6.0后变成了动态申请。
而iOS端视频采集,相比安卓更加便利,使用AVFoundation框架提供的一系列的API便可实现。
在说音频采集内容以前,先了解一些音频基础知识:
PCM:脉冲编码调制,一种将声音数字化的方法。
采样精度(bit pre sample):每一个声音样本的采样位数。
声道(channel):相互独立的音频信号数,单声道(mono)立体声(Stereo)
语音帧(frame):在音频数据中,帧(frame)是全部通道的一个样本。
采样频率(sample rate):每秒钟采集多少个声音样本
声音在通过麦克风后,会转换成一连串电压变化的信号。要将这样的电压变化的信号转化成为PCM信号则须要进行三个过程:抽样、量化、编码。要实现这三个过程,则须要使用三个参数,它们是:采样频率、采样位数和声道数。
采样频率即每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原度越高,但同时它占的资源比越多。因为人耳的对声音的频率分辨有限,过高或过低的频率并不能分辨出来。在16位声卡中有22KHz、44KHz等几级,目前的经常使用采样频率不超过48KHz。
采样位数(采样值)即将采样样本幅度量化。它是用来衡量声音波动变化的一个参数。它的数值越大,分辨率也就越高,所发出声音的强度越强。
在计算机中采样位数通常有8位和16位之分,8位不是说把纵坐标分红8份,而是分红2的8次方即256份; 同理16位是把纵坐标分红2的16次方65536份。采样位数的值越大,其记录的波形就越接近原始信号。
声道主要有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声的pcm可使两个喇叭都发声(通常左右声道有分工) ,更能感觉到空间效果。
说完采样频率、采样位数和声道数,接下来咱们看一下PCM文件所占容量公式:
PCM文件存储量 = (采样频率·采样位数·声道数·时间)/8 (单位:字节数)
音频源:音频源相比视频源来讲,其采集源有限主要就是麦克风。安卓端音频采集大都使用AudioRecord,iOS端则会使用苹果自身的Audio Unit进行采样。
缓冲区:说完音频源接下来就说一下缓冲区。缓冲区是麦克风采集到的数据后放置的一个地方。数据库在这里进行存放,再被读取得到录制的音频数据。这里会牵扯到缓冲区大小。缓冲区设置得大一些,能够增长系统的稳定性;而把缓冲区设置得小一写,则会提高系统的响应时间,减小音频延迟。
以上就是咱们视频通讯采集的全部内容,下一篇咱们将介绍视频处理。