一、视频编码
为什么进行视频编码呢?因为原始视频数据非常大,会造成存储和传输的困难,所以视频文件都需要在录制完成后进行编码。
而编码主要从两个维度压缩数据。
1、单一图像某一个区域的相邻像素相似,如一片红色区域只记录红色的色值以及区域,不记录这个区域的每一个像素点。
2、相邻的的两张图像比较相似,对图像方法的第一帧进行编码,然后用某种方式描述接下来的帧相对于附近的帧有什么区别。
二、视频格式
MP4、MOV、AVI、RMVB这些播放格式其实都是封装格式,除了RMVB比较特殊之外,其他格式内封装的视频编码都是H264,H264具有高压缩率,但是相应的,解码难度也是比较难的。
三、码率
码率 = 视频文件的的大小➗视频的时长。
码率和分辨率和视频质量的关系:
1、码率可以理解为取样率,单位时间内取样率越大,精度就越高,同时体积就越大。
2、当视频没有经过编码时,如果分辨率越高,那么视频图像的细节越清晰。
3、如果视频经过编码,被限制在一定码率内,编码器必须舍弃掉一部分细节。
所以,分辨率和码率都和清晰度有关。
四、软解码和硬解码
前言:对H264的视频解码给CPU造成了很大的负担,所以我们要把这部分的工作交给更善于大量处理简单工作的GPU。
1、GPU解码就是所谓的硬解码。
2、CPU解码就是软解码。
BTW:iOS提供的播放器类使用的是硬解码,所以视频播放不会对CPU造成很大的压力,但是支持的播放格式比较单一,一般就是MP4、MOV 、M4V这几个。
五、HLS
HLS:HTTP Live Streaming的缩写,是苹果公司提出来的基于HTTP的流媒体网络传输协议。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。
HLS的优点:
1、看一段缓存一段,防止只看了一段视频但是把整个视频文件都缓存下来的用户,减少服务器的压力和节省流量。
2、根据用户网速切换不同的码率,兼顾流畅性和清晰度。
六、视频录制
1、创建会话AVCaptureSession,用于控制input到output的流向。
2、获取设备AVCaptureDevice,摄像头用于视频采集,话筒用于音频采集。
3、创建输入设备AVCaptureDeviceInput,将设备绑定到input口中,并添加到session上
4、创建输出AVCaptureOutput,可以输出到文件和屏幕上。 AVCaptureMovieFileOutput 输出一个电影文件 AVCaptureVideoDataOutput 输出处理视频帧,用于显示正在录制的视频 AVCaptureAudioDataOutput 输出音频数据
5、音视频合成到一个文件中
七、推流和拉流
1、视频推流
将客户端录制的视频资源发送到服务器上。
2、视频拉流
客户端从服务器拉取语音视频流到客户端播放。
八、补充知识点:
1、Mbps=Mbit/s即兆比特每秒(1,000,000bit/s),Million bits per second的缩写,是一种传输速率单位,指每秒传输的位bit(比特)数量。
2、bit代表位或比特,存放一位二进制数,即 0 或 1,最小的存储单位。
3、Byte代表字节,8个二进制位为一个字节,即1Byte=8bit,Byte为数据量常用单位。
注意:一定要严格区分大小写,小写b代表bit,大写B代表Byte,不能混用。
1Mbps=1,000,000比特/秒=125,000字节/秒=0.125MB/s
4、离线下载
离线下载其实就是下载工具的服务器代替电脑用户先行下载,多用于冷门资源。比如,电脑用户的正常下载最大速度能达到200KB/S,但是某个资源是冷门资源,下载速度只能达到10KB/S,电脑用户就得下很久,如果用户使用离线下载技术,就可以让服务商的服务器代替电脑用户下载,电脑用户就可以关掉下载工具或者机器,节约时间和电费。等到离线下好了,电脑用户再从下载工具的服务器上以200KB/S(理论上会员等级越高越快,但最高速度仍然受限制于你的本身宽带)的速度下到自己的电脑上。即使对于热门资源,离线下载也能省却许多挂机等待的时间,最重要的是能够腾出电脑宽带做其他的事情。【来自百度百科】
三大优点:高速、稳定(离线下载能够提供稳定的速度)、省时
网友评论