音视频传输时的基本步骤:
1.发起会话(Sip协议)
2.编码(硬件编码、软件编码)
3.传输(RTP)
4.解码(硬件解码、软件解码)
5结束会话(Sip协议)
视频格式
视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。
MPEG、AVI、MOV、ASF、3GP、MKV、RMVB......
音频格式
音频格式是指要在计算机内播放或是处理音频文件,也就是要对声音文件进行数、模转换,这个过程同样由采样和量化构成。
常见的音频格式有:CD 格式、WAVE(*.WAV)、AIFF、AU、MP3、MIDI、WMA、RealAudio、VQF、OggVorbis、AAC、APE。
编码
编解码器(codec)指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序。这里指的变换既包括将信号或者数据流进行编码(通常是为了传输、存储或者加密)或者提取得到一个编码流的操作,也包括为了观察或者处理从这个编码流中恢复适合观察或操作的形式的操作。编解码器经常用在视频会议和流媒体等应用中,通常主要还是用在广电行业,作前端应用。
大多数编解码器是有损的,目的是为了得到更大的压缩比和更小的文件大小。当然也有无损的编解码器,但是通常没有必要为了一些几乎注意不到的的质量损失而大大增加编码后文件的大小。除非该编码的结果还将在以后进行下一步的处理,此时连续的有损编码通常会带来较大的质量损失。
视频协议
目前主要的视频压缩协议有:h.261、h.263、h.264 和mpeg-1、mpeg-2 和mpeg-4。第一个视频压缩标准是h.261,它的算法现在来看,非常简单,但是,它的很多视频压缩的思想,一直影响到现在最新的压缩标准h.264。
音频协议
音频协议也分两大类,itu 组织的主要是用于视频会议的g 系列协议。这些协议主要有两大特点,第一是比较关注语音压缩,毕竟开会主要是要听人讲话;对音乐的压缩效果可能就不是太好了;第二是压缩率都比较大,码率都比较低,典型的g.723 支持5.9k/s 这样的码率,而且语音音质还很不错。iso 的音频可能更为人熟知一些,最流行的就是mp3,它的全称是mpeg-1 audio layer 3,意思是mpeg-1的音频第三层;另外,最新的音频算法被称为aac(也称为mp4),它定义在mpeg-2 或mpeg-4 的音频部分。他们的特点是音质好,支持多声道,高采样精度和采样频率,尤其对音乐的压缩效果比g 系列要好太多。
解码
硬件解码:
视频解码分为软解和硬解。
所谓“软解”就是通过软件让CPU 进行视频解码处理;而“硬解”是指不依赖于CPU,通过专用的设备(子卡)单独完成视频解码,比如曾经的VCD/DVD 解压卡、视频压缩卡都被冠以“硬解”的称号。现在实现高清硬解不需要额外的子卡,也不需要额外的投入,因为硬解码模块被整合在了GPU 内部,而目前主流的显卡(包括整合显卡)都能支持硬解码。
“硬解”其实更需要软件的支持,只是基本不需要CPU 参与运算,从而为系统节约了很多资源开销。通过降低CPU占用率,可以给用户带来很多实惠:
GPU 硬解码高清视频的优势:
1. 不需要太好的CPU,单核足矣,CPU 方面节约不少资金;
2. 硬解码基本相当于免费附送,不到500 元的整合主板都能完美支持;
3. 硬解码让CPU 占用率超低,系统有能力在看HDTV 的同时进行多任务操作;
4. CPU 需要倾尽全力才能解码HDTV,而GPU 只需动用0.1 亿晶体管的解码模块就能完成任务,功耗控制更好;
GPU 硬解码高清视频的劣势:
1. 起步较晚,软件支持度无法与软解相提并论;
2. 面对杂乱无章的视频编码、封装格式,硬解码无法做到全面兼容;
3. 软解拥有大量画面输出补偿及画质增强技术,而硬解这方面做得还远远不够;
4. 硬解码软件设置较为复杂,很多朋友根本不知道该如何正确使用GPU 硬件解码。
帧
帧——就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB 就是最常见的。
I frame :帧内编码帧又称intra picture,I 帧通常是每个GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I 帧可以看成是一个图像经过压缩后的产物。
P frame: 前向预测编码帧又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;
B frame: 双向预测内插编码帧又称bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;
分辨率
a. 物理分辨率, 即手机屏幕能显示的像素数, 用W x H 个像素表示。常见的手机屏幕分辨率为320x240(QVGA), 随着大屏幕手机的普及, 更高的分辨率也开始出现. 例如: 480x320(iphone),640x360(nHD, 诺基亚触屏系列常见),640x480(VGA, 多普达系列常见), 甚至高达852x480(夏普高端手机常见).
b. 视频文件的分辨率, 这个是指视频画面的实际分辨率, 如, 320x240, 480x272, 640x480 等等。一般来说, 大部分手机的解码芯片不支持超过其屏幕物理分辨率的视频, 部分可以支持超过其屏幕物理分辨率的视频, 例如, 虽然iphone 的屏幕物理分辨率为480x320, 但它支持640x480 的视频, 此时播放的画面实际是把原视频缩小的.
码率
一般用多少kbps(千比特/秒)或者mbps(兆比特/秒)来表示。手机解码芯片所支持的码率一般都在1Mbps 以下.
帧率
(FPS, 帧/秒), 就是视频画面刷新的速度, 作为参考, 国内电视机一般是25FPS, 电影标准为24FPS. 手机芯片, 最高支持30FPS, 早期型号最大只能15fps
RGB和YUV
RGB 指的是红绿蓝,应用还是很广泛的,比如显示器显示,bmp 文件格式中的像素值等;而yuv 主要指亮度和两个色差信号,被称为luminance 和chrominance 他们可以相互转化,我们视频里面基本上都是用yuv 格式。
YUV 文件格式又分很多种,如果算上存储格式,就更多了,比如yuv444、yuv422、yuv411、yuv420 等等,视频压缩用到的是420 格式,这是因为人眼对亮度更敏感些,对色度相对要差些。另外要注意几个英文单词的意思,比如:packet、planar、interlace、progressive 等。
流媒体概念
流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称,即流媒体技术;狭义上的流媒体是相对于传统的下载-回放方式而言的,指的是一种从Internet 上获取音频和视频等多媒体数据的新方法,它能够支持多媒体数据流的实时传输和 实时播放。
流媒体协议
RTP数据协议
实时传输协议(Real- time Transport Protocol,PRT)是在Internet 上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多 (multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP 通常使用UDP 来进行多媒体数据的传输,但如果需要的话可以使用TCP 或者 ATM 等其它协议,整个RTP 协议由两个密切相关的部分组成:RTP 数据协议和RTP 控制协议。
RTP 协议 的目的是提供实时数据(如交互式的音频和视频)的端到端传输服务,因此在RTP 中没有连接的概念,它可以建立在底层的面向连接或面向非连接的传输协议之 上;RTP 也不依赖于特别的网络地址格式,而仅仅只需要底层传输协议支持组帧(Framing)和分段(Segmentation)就足够了;另外RTP 本身还不提供任何可靠性机制,这些都要由传输协议或者应用程序自己来保证。
RTCP控制协议
RTCP 控制协议需要与RTP 数据协议一起配合使用,当应用程序启动一个RTP 会话时将同时占用两个端口,分别供RTP和RTCP使用。RTP 本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完成。通常RTCP 会采用与RTP相同的分发机制,向会话中的所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行诊断。
RTSP实时流协议
作为一个应用层协议,RTSP 提供了一个可供扩展的框架,它的意义在于使得实时流媒体数据的受控和点播变得可能。总的说来,RTSP 是一个流媒体表示协议, 主要用来控制具有实时特性的数据发送,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。RTSP 可以对流媒体提供诸如播放、暂停、快进等操作,它负责定义具体的控制消息、操作方法、状态码等,此外还描述了与RTP间的交互操作。
SIP
1、SIP协议介绍
Internet 的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换。由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者
可能是在代理间移动,他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等)-有时候是多种媒介一起交互。人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。本SIP(会话初始协议)和这些协议一样,同样允许使用Internet 端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。为了能够定位精确的会话参与者,并且也为了其他的目的,SIP 允许创建基础的network hosts(叫做代理服务器),并且允许终端用户注册上去,发出会话邀请,或者发出其他请求。SIP 是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。
2、SIP协议功能概况
SIP 是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议)例如Internet 电话。SIP 也可以邀请参与者参加已经存在的会话,比如多方会议。媒体
可以在一个已经存在的会话中方便的增加(或者删除)。SIP 显示的支持名字映射和重定向服务,这个用于支持个人移动业务-用户可以使用一个唯一的外部标志而不用关系
他们的实际网络地点。SIP 在建立和维持终止多媒体会话协议上,支持5 个方面:
用户定位: 检查终端用户的位置,用于通讯。
用户有效性:检查用户参与会话的意愿程度。
用户能力:检查媒体和媒体的参数。
建立会话:”ringing”,建立会话参数在呼叫方和被叫方。
会话管理:包括发送和终止会话,修改会话参数,激活服务等等。
SIP不是一个垂直集成的通讯系统。SIP可能叫做是一个部件更合适,它可以用作其他IETF协议的一个部分,用来构造完整的多媒体架构。比如,这些架构将会包含实时数据传输协议(RTP)(RFC 1889)用来传输实时的数据并且提供QoS反馈,实时流协议(RSTP)(RFC 2326)用于控制流媒体的的传输,媒体网关控制协议(MEGACO)(RFC 3015)用来控制到公共电话交换网(PSTN)的网关,还有会话描述协议(SDP)(RFC 2327)用于描述多媒体会话。因此,SIP应该和其他的协议一起工作,才能提供完整的对终端用户的服务。虽然基本的SIP协议的功能组件并不依赖于这些协议。
SIP 本身并不提供服务。但是,SIP 提供了一个基础,可以用来实现不同的服务。比如,SIP可以定位用户和传输一个封装好的对象到对方的当前位置。并且如果我们利用这点来通过SDP 传输会话的描述,立刻,对方的用户代理可以得到这个会话的参数。如果我们用这个像传输会话描述(SESSION DESCRIPTION SD)一样呼叫方的照片,一个”呼叫ID”服务很容易就建立了。这个简单的例子说明了,SIP 作为一个基础,可以在其上提供很多不同的服务。
SIP 并不提供会议控制服务(比如议席控制或者投票系统),并且并没有建议会议应该则那样管理。可以通过在SIP 上建立其他的会议控制协议来发起一个会议。由于SIP 可以管理参与会议的各方的会话,所以会议可以跨异构的网络,SIP 并不能,也不打算提供任何形式的网络资源预留管理。