流媒体基础总结

来源:互联网 发布:网络社交平台的特点 编辑:程序博客网 时间:2024/06/15 14:27

本人从事流媒体开发以来甚是感觉基础重要性,因此特地总结一下,希望初学者能过引起重视并少走弯路,也请相关大神多多指教,共同进步。


0.流媒体相关术语



我们先从常见视频格式mp4开始入手了解如图:




1.1

我们可以通过VLC,暴风影音,KMplayer等播放器来查看该视频文件的相关信息这里使用是VLC和暴风影音,在视频播放过程中点击右击找到工具或者属性来查看如图所示:

注:(VLC 播放器查看视频文件信息)









注:(暴风影音查看视频文件信息)








通过播放器可以查看到几个音视频比较重要的参数分别为:码率,比特率,帧率,分辨率, 编码格式,下面分别对其进行详解:

1. 码率

码率其实又城比特率,所谓码率是数据传输时单位时间传送的数据位数,一般我们用的单位是Kbps,其英文为Kilobits per second,意为“千位每秒”意思是没过一秒钟,有多少数据流流过。但是需要注意两点,一点是:这里的K(千)不是十进制里面的1000,而是计算机二进制换算单位1024。另一点是:这里的b是“位”或者“比特”(bit)是计算机里面最小的单位,跟我们经常说的下载速度多少KB是不一样的,大写B表示字节,字节和位的关系为 1字节=8位(1 Byte = 8 bit),比如我们经常说到下载一个大型游戏的下载速度为700多K,800多K,其实就是700KB,800KB当然这里的K也是1024,换算成Kb即为:700KB x 8 = 5600Kb,800KB x 8 = 6400Kb。而我们平时又说的下载速度几兆(MB),它和KB之间的关系为:1MB = 1024KB(1024字节),即下载速度为:700KB / 1024 = 0.68MB,800KB / 1024 = 0.78MB。(说到单位这块,突然想到网络宽带单位,也跟大家分享一下,以后做直播或者流媒体服务端的小伙伴们会涉及到。经常说到我家网速是2兆,8兆,10兆等等,光纤的网速有的能达到100兆,200兆甚至更高,这里的单位为Mb是小写的b哦,即2Mb,100Mb 换算成咱们经常说的下载速度为2Mb为例:2 x 1024 = 2048Kb ,2048Kb / 8 = 256KB。当然100Mb为:100 x 1024 / 8 = 12800KB / 1024 = 12.5MB(相当牛掰的网速了呢),其实实际的网速往往都低于这个网速的,上行即上传的速度单位也是如此,所以在做实际开发过程中,这些都是要考虑进去的)。如果小伙伴们对计算机换算单位这块不是太熟悉,可自行百度“计算机容量单位换算”

这里涉及到一个有关码率公式为:码率 X 播放时间 = 文件体积,在刻录光盘的时候已知道光盘容量和视频时间可以计算出码率,对其进行刻录。
需要特别注意的是,这里的码率实际上是视频码率和音频码率之和。就像上图中暴风影音分别显示出此视频文件的视频码率为:1902.78Kbps,音频文件的码率为:157.37Kbps。这个视频码率就应该为1902.78Kbps + 157.37Kbps = 2060.15Kbps。讲到这里,我们还需要对视频和音频码率进行深入了解:

音频码率:

对于音频而言,必须进行编码。即为数据压缩,相对视频也是如此。如果未经过编码(数据压缩),直接进行传输被称为PCM(脉冲编码调制)。要算一个PCM音频流的码率是一件轻松的事情,即:采样率 x 采样大小值 x 声道数 bps。这三个参数也是开发过程经常遇到。
采样率即录音设备在一秒钟内对声音信号的采样的次数,采用频率越高声音就越接近真实的声音。在开发过程中主流采样率一般设置为22.05KHz(22050Hz),44.1Khz(44100Hz),48KHz(48000Hz)三个等级,22.05KHz只能达到FM广播的声音品质,44.1KHz是CD音质的界限,在开发过程中用的也是比较多的,而已48KHz就更加精确一些,人耳最高分辨率为20KHz,因此在做一些只要求能听到声音的功能中,是没有必要把采样率设置这么高的,8KHz左右即可 。采样大小值其实又称采用精度决定了记录声音的动态范围,是以(Bit)为单位的,常见的有8bit ,16bit,32bit,8bit可以把声波分成265级(其实可以理解为,C语言中 char类型的取值范围可0~255),而16位也是如此可以把波分成2的16次幂即为65536级信号,位数越高,声音保真度越高,而需要的存储空间也就会约多,位数越低,反之。他单位为bit/s即(bps 上面提到的)一般开发过程中如果没有特别要求设置为16bit就足够了。至于声道数,就是经常说到的是单通道即为1,双通道即2个通道,还有4个通道的,一般设置双通道就可以了。

一个采用率为44.1KHz,采用大小(采用精度)为16bit,双通道的PCM编码的WAV文件(如果没有对音频做任何压缩处理,音频数据在计算机是以文件PCM格式文件存在的,微软的WAV音频文件格式是没有对PCM里面的音频数据做任何压缩和处理的)它码率为:44.1K x 16 x 2 = 1411.2Kbps。我们常说的128K的MP3,对应的WAV的参数,就是这个1411.2Kbps,这个参数也被称为数据带宽,它和ADSL的带宽是一个概念,将码率除以8,就可以得到WAV的数据速率,即176.4KB/s。这表示存储一秒钟采样率为44.1KHz,采样率大小为16bit,双通道的PCM编码的音频信号,需要176.4KB的存储空间,一分钟就是176.4 x 60s = 10.34M,这对大部分用户是不能接受的,所以需要降低磁盘占用,只有两种方法,降低采样指标或者压缩音频数据(编码)。明显降低采样指标是不可取的,因此专家们研发了各种压缩方案。最原始的有DPCM,ADPCM,其中最出名就是MP3,还有就是我们经常提到的AAC,WMA,等格式。所以数据压缩以后的码率远小于原始码。但是我们在开发过程几乎都是根据指定音频编码格式来定音频码率参数的。一般固定参数为128,192,256,320。当然如果对声音的音质要求不高,低于128也是可以的,不同的编码格式在使用固定码率的时候音质效果也是不同的,还是要看根据开发实际情况而定的,下面进行详细解释一下常见的几种音频格式(这几种格式还会涉及到一些其他方面的知识,比如aac分ADIF和ADTS两种类似一种是用于网络传输一种主要本地存储。以后有机会再详细解释,这些也可以自行百度):


AAC:AAC号称最大能容纳48通道的音轨,采样率大96KHz,并且在320Kbps的数据速率下能为5.1声道音乐节目提供相当于优质的广播。和MP3比起来,他的音质比较好,也能够节省大约30%的存储空间与带宽。他是遵循MPEG-2的规格所开发的技术,松下的产品都采用了这种编码方式,当然也能兼容MP3,128Kbps的aac足以和224Kbps的mp3抗衡,空间却小了差不多一半,所以在直播,点播项目中音频几乎都采用的是aac格式传输。

WMA:由微软开发,WMA针对的是网络市场,微软声称,在64Kbps的码率情况下,WMA可以达到近CD的音质,WMA支持防复制功能。WMA支持流技术,即一边读一边播放,因此WMA可以很轻松的实现在线广播。

MP3:MP3这块知道有点甚少,不过MP3在比特率为128Kbps左右最优的,大概在3~4MB左右



视频码率:

视频码率是视频数据(视频色彩量,亮度量,像素量)每秒输出的位数 ,跟音频码率是一样的都是Kbps,如果不考虑视频数据压缩(视频编码),它跟分辨率,帧率有直接关系的,计算公式为:视频码率 = 分辨率 x 帧率 例如在16:9分辨率为1920 x 1080 帧率为25的视频流中,它的码率为:1920 x 1080 x 25 = 51840000大约为: 6.17MBps,每秒钟需要传输视频流为6.17MB。而我们从暴风影音看到的码率为1902.78Kbps,原因是原始的视频流数据进行的压缩(编码)我们可以看到视频的编码格式为avc即我们经常说的h264(有关h264以后有机会我会详细解释的,这里可以理解为视频流数据压缩格式)。跟我们上面提到的音频码率类似原始的PCM的音频码率要比压缩(编码)之后的音频码率大的多。当然视频流的码率越高质量相对的也就会约好,然而在我们肉眼分辨的范围内,当码率高到一定程度,感觉没有什么差别。所以码率设置有它的最优值,其中我们经常用到的h264(又称AVC,X.h264)文档中,视频的建议码率如下(当然其他格式视频流也可以根据官方文档查到):


视频大小分辨率建议码率480P720x4801800Kbps720P1280x7203500Kbps1080P1920x10808500Kbps


手机码率建议(当然也不是定死还是根据实际情况设置码率):

 计算公式192x144320x240480x360640x4801280x7201920x1080极低码率 30kbps60kbps120kbps250kbps500kbps1mbps低码率 60kbps120kbps250kbps500kbps1mbps2mbps中码率 120kbps250kbps500kbps1mbps2mbps4mbps高码率 250kbps500kbps1mbps2mbps4mbps8mbps极高码率 500kbps1mbps2mbps4mbps8mbps16mbps


2. 帧率:

所谓帧率就是每秒显示帧数(简称:FPS)大家应该知道两张图像显示的间隔为1/24秒,人眼是看不出来的,这也就是动画的由来,也就是视频24帧的由来。帧率说简单点就是每秒钟传输多少张图像。现实当中经常玩大型游戏有会显示FPS就是这意思了,游戏的话规定每秒钟最少得60帧,否则会很卡的,而视频是不用的24帧即可。高的帧率可以得到更流程,更逼真的动画,一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互干和逼真感,但是一般来说超过75fps一般就不容易感觉到有明显的流畅提升了。

3. 分辨率:

分辨率的话我感觉大家都很不陌生吧,简单点分辨率越高就月清晰。分辨率决定了位图像素的精细程度,分辨率越高,所包含的像素越多,占用的空间也就会越大。
它的单位一般为dpi(点没英寸)这个在购买显示器的时候一般都这个参数,大家可以留意一下,当然你越高价格就约贵了。还有ppi(像素没英寸)他们之间是可以进行换算的,具体就不再多做解释了。

4. 编码格式:

编码格式又分音频编码和视频编码上面码率那块是有涉及到的,在这里稍微详细解释一下,主流的音频和视频的编码格式。

音频编码格式:

PCM编码:相对自然界的信号,任何数字的音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐赏析,CD,DVD以及我们常见的WAV文件中均有应用。因此,PCM约定成了无损编码,因为PCM代表了数子音频中最佳保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的接近。而我们习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损,是为了告诉大家,要做到真正的无损的困难的。就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。PCM编码最大的优点就是音质好,最大的缺点就是体积大,我们常见的Audio CD就是采用了PCM编码。
WAVE编码:这是一种古老的音频文件格式,由微软开发。WAV是一种文件格式。所有的WAV都有一个文件头,这个文件头有音频流的编码参数。WAV对音频的编码没有硬性规定。除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流就行编码。很多朋友没有这个概念。WAV也可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中。只要安装好响应的decode(解码器)就可以赏析这些WAV了。

MP3编码:MP3作为目前最为普及的音频压缩格式,为大家所大家接受,各地与MP3相关的软件层出不穷,而且更多的硬件产品也开始支持MP3。MP3可以做到12:1的惊人压缩比并保持基本可听的音质,在当前硬盘天价的日子里,MP3速度被用户接受,随着网络的普及,MP3被数以忆的用户接受。MP3编码技术的发布之初其实是非常不完善的。由于缺乏对声音和人耳听觉的研究,早期的mp3编码器几乎全是以粗暴方式编码,音频破坏严重。随着新技术的不断导入,mp3编码技术一次一次的被改良,其中有2次技术上的突破。

WMA编码:该格式也是有微软开发,上面在说到码率的时候或多或少有提到点,是微软针对网络市场研发的一种编码技术。主要可以实现一边度一边播放。因此该格式很轻松的实现在线广播机制。详细一点上面有提到的。

视频编码格式:

AVI:他的英文全程为Audio Video Intereaved,即音频视频交错格式,它与1992年被微软公司推出。这种视频格式的优点是图像质量好,可以跨多个平台使用,其缺点是体积过与庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows媒体播放器播放不了早起的AVI格式视频,还得需要下载相应的解码器来解决。
 
MPEG格式系列:即运动图像专家组格式,家里唱看的VCD,DVD就是这种格式,MPEG文件格式是运动图像压缩算法的国际标准,它采用了有损压缩方法减少运动图像中冗余信息,说的更加明白点就是MPEG的压缩算法依据是相邻两幅画绝大多数是相同的,把后续图像中和前面图像有冗余的部分去除,从而达到压缩的目的(最大压缩比可达到200:1)目前MPEG格式有三个压缩标准,分别是MPEG-1,MPEG-2,MPEG-4,另外MPEG-7与MPEG-21仍处于研发阶段(具体相信了解可以自行百度)


注:以上谈到都是基础概念性的知识,以后有机会用代码实现方式分享大家。

















































0 0
原创粉丝点击