流媒体(streaming media):是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。
多媒体兼指多媒体信息和多媒体技术,并以后者居多。多媒体信息是指集数据、文字、图形与图像为一体的综合媒体信息;多媒体技术则是将计算机技术与通信传播技术融为一体,综合处理、传送和储存多媒体信息的数字技术,它提供了良好的人机交互功能和可编程环境,极大的拓展了计算机的应用领域。流媒体的实质是一种多媒体文件,由于在网络上传输的过程中应用了流技术而命名。所谓流技术,就会把连续的影像和声音信息经过压缩处理后放到网站服务器,让用户一边下载一边观看、收听,而不需要等整个压缩文件下载到自己的机器后才可以观看的网络传输技术。这个过程的一系列相关的包称为”流”。流媒体实际指的是一种新的媒体传送方式,而非一种新的媒体。
在网络上传输音/视频等多媒体信息,主要有下载和流式传输两种方案。音频/视频(A/V)文件一般都较大,所以需要的存储容量也较大;同时由于网络带宽的限制,下载常常要花数分钟甚至数小时,所以这种处理方法延迟也很大。流式传输时,声音、影像或动画等时基媒体由音视频服务器向用户计算机的连续、实时传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当声音等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。流式不仅使启动延时成十倍、百倍地缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部从Internet上下载才能观看的缺点。
流式传输方式则是将整个A/V及3D等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备(硬件或软件)对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式,不仅使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。
流媒体指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播放,只是在开始时有一些延迟。流媒体实现的关键技术就是流式传输。
流式传输定义很广泛,主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法:实时流式传输(Real time streaming)和顺序流式传输(progressive streaming)。顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,在传输期间不根据用户连接的速度对下载顺序做调整。实时流式传输指保证媒体信号带宽与网络连接匹配,使媒体可被实时观看到。实时流式传输根据网络情况调整输出音视频的质量从而实现媒体的持续的实时传送,用户可快进或后退以观看前面或后面的内容。
一般说来,如视频为实时广播,或使用流式传输媒体服务器,或应用如RTSP的实时协议,即为实时流式传输。如使用HTTP服务器,文件即通过顺序流发送。采用哪种传输方法依赖你的需求。当然,流式文件也支持在播放前完全下载到硬盘。
顺序流式传输:是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不像实时流式传输在传输期间根据用户连接的速度做调整。由于标准的HTTP服务器可发送这种形式的文件,也不需要其他特殊协议,它经常被称作HTTP流式传输。顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于该文件在播放前观看的部分是无损下载的,这种方法保证电影播放的最终质量。这意味着用户在观看前,必须经历延迟,对较慢的连接尤其如此。对通过调制解调器发布短片段,顺序流式传输显得很实用,它允许用比调制解调器更高的数据速率创建视频片段。尽管有延迟,毕竟可让你发布较高质量的视频片段。顺序流式文件是放在标准HTTP或FTP服务器上,易于管理,基本上与防火墙无关。顺序流式传输不适合长片段和有随机访问要求的视频,如:讲座、演说与演示。它也不支持现场广播,严格说来,它是一种点播技术。
实时流式传输:指保证媒体信号带宽与网络连接匹配,使媒体可被实时观看到。实时流与HTTP流式传输不同,他需要专用的流媒体服务器与传输协议。实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。理论上,实时流一经播放就可不停止,但实际上,可能发生周期暂停。实时流式传输必须匹配连接带宽,这意味着在以调制解调器速度连接时图象质量较差。而且,由于出错丢失的信息被忽略掉,网络拥挤或出现问题时,视频质量很差。如欲保证视频质量,顺序流式传输也许更好。实时流式传输需要特定服务器,如:QuickTime Streaming Server、RealServer与Windows Media Server。这些服务器允许你对媒体发送进行更多级别的控制,因而系统设置、管理比标准HTTP服务器更复杂。实时流式传输还需要特殊网络协议,如:RTSP (RealTime Streaming Protocol)或MMS (Microsoft Media Server)。这些协议在有防火墙时有时会出现问题,导致用户不能看到一些地点的实时内容。
流式传输的实现需要缓存:因为Internet以包传输为基础进行断续的异步传输,对一个实时A/V源或存储的A/V文件,在传输中它们要被分解为许多包,由于网络是动态变化的,各个包选择的路由可能不尽相同,故到达客户端的时间延迟也就不等,甚至先发的数据包还有可能后到。为此,使用缓存系统来弥补延迟和抖动的影响,并保证数据包的顺序正确,从而使媒体数据能连续输出,而不会因为网络暂时拥塞使播放出现停顿。通常高速缓存所需容量并不大,因为高速缓存使用环形链表结构来存储数据:通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。流式传输的实现需要合适的传输协议。由于TCP需要较多的开销,故不太适合传输实时数据。
流式传输的过程一般是这样的:用户选择某一流媒体服务后,Web浏览器与Web服务器之间使用HTTP/TCP交换控制信息,以便把需要传输的实时数据从原始信息中检索出来;然后客户机上的Web浏览器启动A/V Helper程序,使用HTTP从Web服务器检索相关参数对Helper程序初始化。这些参数可能包括目录信息、A/V数据的编码类型或与A/V检索相关的服务器地址。A/V Helper程序及A/V服务器运行实时流控制协议(RTSP),以交换A/V传输所需的控制信息。与CD播放机或VCRs所提供的功能相似,RTSP提供了操纵播放、快进、快倒、暂停及录制等命令的方法。A/V服务器使用RTP/UDP协议将A/V数据传输给A/V客户程序(一般可认为客户程序等同于Helper程序),一旦A/V数据抵达客户端,A/V客户程序即可播放输出。需要说明的是,在流式传输中,使用RTP/UDP和RTSP/TCP两种不同的通信协议与A/V服务器建立联系,是为了能够把服务器的输出重定向到一个不同于运行A/V Helper程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器。
流媒体格式:声音流、视频流、文本流、图像流、动画流
(1). RA:实时声音。
(2). RM:实时视频或音频的实时媒体。
(3). RT:实时文本。
(4). RP:实时图像。
(5). SMIL:同步的多重数据类型综合设计文件。
(6). SWF:macromedia的real flash和shockwave flash动画文件。
(7). RPM:HTML文件的插件。
(8). RAM:流媒体的元文件,是包含RA、RM、SMIL文件地址(URL地址)的文本文件。
(9). CSF:一种类似媒体容器的文件格式,可以将非常多的媒体格式包含在其中,而不仅仅限于音、视频。
流媒体传输协议:
(1). RSVP(Resource Reservation Protocol, 资源预留协议):最初是IETF为QoS的综合服务模型定义的一个信令协议,用于在流(flow)所经路径上为该流进行资源预留,从而满足该流的QoS要求。资源预留的过程从应用程序流的源节点发送Path消息开始,该消息会沿着流所经路径传到流的目的节点,并沿途建立路径状态;目的节点收到该Path消息后,会向源节点回送Resv消息,沿途建立预留状态,如果源节点成功收到预期的Resv消息,则认为在整条路径上资源预留成功。RSVP是一个在ip上承载的信令协议,它允许路由器网络任何一端上终端系统或主机在彼此之间建立保留带宽路径,为网络上的数据传输预定和保证Qos。它对于需要保证带宽和时延的业务,如语音传输,视频会议等具有十分重要的作用。
(2). RTP(Real-time Transport Protocol, 实时传输协议):是一个网络传输协议,详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是创建在UDP协议上的。RTP为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP上运行RTP以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是RTP可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么RTP可以使用该组播表传输数据到多个目的地。
RTP本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这一过程。 RTP并不保证传送或防止无序传送,也不确定底层网络的可靠性。RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如在视频解码中,就不需要顺序解码。
(3). RTCP(Real-time Transport Control Protocol, 实时传输控制协议):是实时传输协议(RTP)的一个姐妹协议。RTP使用一个偶数UDP port,而RTCP则使用RTP的下一个port,也就是一个奇数port。RTCP与RTP联合工作,RTP实施实际数据的传输,RTCP则负责将控制包送至电话中的每个人。RTCP为RTP媒体流提供信道外(out-of-band)控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送。RTCP定期在流多媒体会话参加者之间传输控制数据。RTCP的主要功能是为RTP所提供的服务质量(Quality of Service)提供反馈。
RTCP收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,jitter,单向和双向网络延迟等等,网络应用程序即可利用RTCP的统计信息来控制传输的品质,比如当网络带宽高负载时限制信息流量或改用压缩比较小的编解码器。RTCP本身不提供数据加密或身份认证。
(4). MMS(Microsoft Media Server Protocol, 微软媒体服务协议):用来访问并流式接收 Windows Media服务器中.asf文件的一种协议。MMS协议用于访问Windows Media发布点上的单播内容。MMS是连接Windows Media单播服务的默认方法。若观众在Windows Media Player中键入一个URL以连接内容,而不是通过超级链接访问内容,则他们必须使用MMS 协议引用该流。MMS的预设埠(端口)是1755。当使用MMS协议连接到发布点时,使用协议翻转以获得最佳连接。”协议翻转”始于试图通过MMSU连接客户端。MMSU是MMS协议结合UDP数据传送。如果MMSU连接不成功,则服务器试图使用MMST。MMST是MMS协议结合TCP数据传送。
(5). RTSP(Real-Time Streaming Protocol, 实时流传输协议):是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制。服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。RTSP是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。RTSP建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流交换是可能的,通常它本身并不发送连续流。换言之,RTSP充当多媒体服务器的网络远程控制。RTSP连接没有绑定到传输层连接,如TCP。在RTSP连接期间,RTSP用户可打开或关闭多个对服务器的可传输连接以发出RTSP请求。此外,可使用无连接传输协议,如UDP。RTSP流控制的流可能用到RTP,但RTSP操作并不依赖用于携带连续媒体的传输机制。更详细介绍可参考:https://blog.csdn.net/fengbingchun/article/details/90546484
(6). MIME(Multipurpose Internet Mail Extensions, 多用途互联网邮件扩展类型):是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。它是一个互联网标准,扩展了电子邮件标准,使其能够支持:非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。
(7). RTMP(Real Time Messaging Protocol, 实时消息传输协议):是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。
(8). RTMFP(Secure Real-Time Media Flow Protocol):是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。用Adobe AIR框架开发的程序也可以用此协议来发布直播、实时信息。
(9). HLS(HTTP Live Streaming):是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
流媒体播放方式:
(1). 单播:在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,这种传送方式称为单播。每个用户必须分别对媒体服务器发送单独的查询,而媒体服务器必须向每个用户发送所申请的数据包拷贝。这种巨大冗余首先造成服务器沉重的负担,响应需要很长时间,甚至停止播放;管理人员也被迫购买硬件和带宽来保证一定的服务质量。
(2). 组播:IP组播技术构建一种具有组播能力的网络,允许路由器一次将数据包复制到多个通道上。采用组播方式,单台服务器能够对几十万台客户机同时发送连续数据流而无延时。媒体服务器只需要发送一个信息包,而不是多个;所有发出请求的客户端共享同一信息包。信息可以发送到任意地址的客户机,减少网络上传输的信息包的总量。网络利用效率大大提高,成本大为下降。
(3). 点播:点播连接是客户端与服务器之间的主动的连接。在点播连接中,用户通过选择内容项目来初始化客户端连接。用户可以开始、停止、后退、快进或暂停流。点播连接提供了对流的最大控制,但这种方式由于每个客户端各自连接服务器,却会迅速用完网络带宽。
(4). 广播:指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流。例如,用户不能暂停、快进或后退该流。广播方式中数据包的单独一个拷贝将发送给网络上的所有用户。使用单播发送时,需要将数据包复制多个拷贝,以多个点对点的方式分别发送到需要它的那些用户,而使用广播方式发送,数据包的单独一个拷贝将发送给网络上的所有用户,而不管用户是否需要,上述两种传输方式会非常浪费网络带宽。组播吸收了上述两种发送方式的长处,克服了上述两种发送方式的弱点,将数据包的单独一个拷贝发送给需要的那些客户。组播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不需要它的那些客户,保证了网络上多媒体应用占用网络的最小带宽。
流媒体技术应用:流媒体技术广泛用于多媒体新闻发布、在线直播、网络广告、电子商务、视频点播、远程教育、远程医疗、网络电台、实时视频会议等互联网信息服务的方方面面。流媒体技术的应用将为网络信息交流带来革命性的变化,对人们的工作和生活将产生深远的影响。一个完整的流媒体解决方案应是相关软硬件的完美集成,它大致包括下面几个方面的内容:内容采集、视音频捕获和压缩编码、内容编辑、内容存储和播放、应用服务器内容管理发布及用户管理等。流媒体技术和声音信息经过压缩处理后放上网站服务器,让用户一边下载一边观看、收听,而不要等整个压缩文件下载到自己的计算机上才可以观看的网络传输技术。该技术先在使用者端的计算机上创建一个缓冲区,在播放前预先下一段数据作为缓冲,在网路实际连线速度小于播放所耗的速度时,播放程序就会取用一小段缓冲区内的数据,这样可以避免播放的中断,也使得播放品质得以保证。
流媒体传输流程:在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时声音数据。具体的传输流程如下:
(1). Web浏览器与Web服务器之间使用HTTP/TCP交换控制信息,以便把需要传输的实时数据从原始信息中检索出来。
(2). 用HTTP从Web服务器检索相关数据,由A/V播放器进行初始化。
(3). 从Web服务器检索出来的相关服务器的地址定位A/V服务器。
(4). A/V播放器与A/V服务器之间交换A/V传输所需要的实时控制协议。
(5). 一旦A/V数据抵达客户端,A/V播放器就可播放。
主流的流媒体技术有三种:分别是RealNetworks公司的RealMedia、Microsoft公司的WindowsMediaTechnology和Apple公司的QuickTime。这三家的技术都有自己的专利算法、专利文件格式甚至专利传输控制协议。
UDP和TCP协议在实现数据传输时的可靠性有很大的区别:TCP协议中包含了专门的数据传送校验机制,当数据接受方收到数据后,将自动向发送方发出确认信息,发送方在接收到确认信息后才继续传送数据,否则将一直处于等待状态。而UDP协议则不同,UDP协议本身并不能做任何校验。由此可以看出,TCP协议注重传输质量,而UDP协议则注重传输速度。因此,对于对传输质量要求不是很高,而对传输速度则有很高的要求的视音频流媒体文件来说,采用UDP协议则更合适。
流媒体的传输过程中需要缓存的支持:因为Interent是以包为单位进行异步传输的,因此多媒体数据在传输中要被分解成许多包,由于网络传输的不稳定性,各个包选择的路由不同,所以到达客户端的时间次序可能发生改变,甚至产生丢包的现象。为此,必须采用缓存技术来纠正由于数据到达次序发生改变而产生的混乱状况,利用缓存对到达的数据包进行正确排序,从而使视音频数据能连续正确地播放。缓存中存储的是某一段时间内的数据,数据在缓存中存放的时间是暂时的,缓存中的数据也是动态的,不断更新的。流媒体在播放时不断读取缓存中的数据进行播放,播放完后该数据便被立即清除,新的数据将存入到缓存中。因此,在播放流媒体文件时并不需占用太大的缓存空间。
一些术语:
直播过程:[采样] --> [编码] --> [推流] --> [接流] -->[流处理] --> [分发] -->[拉流] --> [解码] -->[播放]。
编码:就是对视频/音频数据进行压缩的过程。视频压缩算法中通常会将视频帧分为不同类型,常见的有I帧、P帧、B帧三种。视频是一张张图片的序列,但如果每张图片都完整,就太大了,因而会将视频序列分成三种帧:(1). I帧:也称关键帧。里面是完整的图片,只需要本帧数据,就可以完成解码。(2). P帧:前向预测编码帧。P帧表示的是这一帧跟之前一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面,叠加上和本帧定义的差别,生成最终画面。(3). B帧:双向预测内插编码帧。B帧记录的是本帧与前后帧的差别。要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的数据与本帧数据的叠加,取得最终的画面。I帧最完整,B帧压缩率最高,而压缩后帧的序列,应该是IBBP间隔出现。这就是通过时序进行编码。
I帧:帧内编码帧,特点:
(1). 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
(2). 解码时仅用I帧的数据就可重构完整图像;
(3). I帧描述了图像背景和运动主体的详情;
(4). I帧不需要参考其他画面而生成;
(5). I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
(6). I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
(7). I帧不需要考虑运动矢量;
(8). I帧所占数据的信息量比较大。
P帧:前向预测编码帧,P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧”某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧”某点”的预测值并与差值相加以得到P帧”某点”样值,从而可得到完整的P帧。又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧。特点:
(1). P帧是I帧后面相隔1~2帧的编码帧;
(2). P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
(3). 解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
(4). P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
(5). P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
(6). 由于P帧是参考帧,它可能造成解码错误的扩散;
(7). 由于是差值传送,P帧的压缩比较高。
B帧:双向预测内插编码帧。B帧的预测与重构:B帧以前面的I或P帧和后面的P帧为参考帧,”找出”B帧”某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中”找出(算出)”预测值并与差值求和,得到B帧”某点”样值,从而可得到完整的B帧。又称bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧。特点:
(1). B帧是由前面的I或P帧和后面的P帧来进行预测的;
(2). B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
(3). B帧是双向预测编码帧;
(4). B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
(5). B帧不是参考帧,不会造成解码错误的扩散。
GOP:视频流中两个I帧的时间距离。
音频编码格式有:AAC、AMR、PCM、ogg、AC3、DTS、APE、AU、WMA。
视频编码格式有:Xvid(MPEG4)、H264、H263、MPEG1、MPEG2、AC-1、RM、RMVB、H.265。
码率:码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内采样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。当然,码率越大,文件体积也越大。
通常来说,一个视频文件包括了画面(视频)及声音(音频),例如一个RMVB的视频文件,里面包含了视频信息和音频信息,音频及视频都有各自不同的采样方式和比特率,也就是说,同一个视频文件音频和视频的比特率并不是一样的。而我们所说的一个视频文件码流率大小,一般是指视频文件中音频及视频信息码流率的总和。
帧率:也称为FPS(Frames Per Second,帧/秒),是指每秒钟刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。越高的帧速率可以得到更流畅、更逼真的动画。每秒钟帧数(FPS)越多,所显示的动作就会越流畅。
分辨率:视频分辨率是指视频成像产品所成图像的大小或尺寸。常见的视像分辨率有640*480,1024*768。在成像的两组数字中,前者为图片长度,后者为图片的宽度,两者相乘得出的是图片的像素,长宽比一般为4:3。480P:640*480个像素点;720P:1280*720个像素点;1080P:1920*1080个像素点。
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。YUV分为三个分量,”Y”表示明亮度(Luminance或Luma),也就是灰度值;而”U”和”V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
硬编解码:通过硬件实现编解码,减轻CPU计算的负担,如GPU等。
软编解码:如H264、H265、MPEG-4等编解码算法,更消耗CPU。
流:一般指通过网络传输的有序数据序列,如直播流,点播流。
推流:指的是把采集阶段封包(将音频,视频打包成packet)好的内容传输到流媒体服务器的过程。
接流:网络协议将编码好的视频流,从主播端推送到服务器,在服务器上有个运行了同样协议的服务端来接收这些网络数据包,从而得到里面的视频流,这个过程称为接流。
拉流(抓流):指流媒体服务器已有直播内容,用指定地址进行拉取的过程。
解码:把获取到的数据解压缩,恢复成原始数据。
以上内容均来自网络整理,主要参考:
1. https://baike.baidu.com/item/%E6%B5%81%E5%AA%92%E4%BD%93
2. https://juejin.im/post/5a6873fd51882573497916bb
3. https://blog.csdn.net/tttyd/article/details/12032357
4. https://segmentfault.com/a/1190000017431963
GitHub:https://github.com/fengbingchun/OpenCV_Test