1、网络流媒体 主讲教师:霍龙社北京大学数字媒体研究所2008.5.292重要通知o 期末考试安排n 时间p 6月13日(周五)上午8点10点n 地点p 待定o 课程作业提交时间n 本周五(5月30日)晚上12点之前n 请没有提交作业的同学注意截至时间3什么是网络流媒体?o 流媒体n 以“流”的方式来传送和消费音视频等多媒体数据n 类似于p 自来水p n 传统的广播电视就是流媒体的一个很好的例子o 网络流媒体n 本课程主要关注基于互联网(IP网络)的流媒体技术和系统n 从使用上目前尚未达到像自来水这样开关自如的程度n 但是技术的发展应该朝这个方向努力4网络流媒体应用分类o 流媒体点播n 流化预编码
2、存储的音视频媒体数据o 流媒体广播n 现场直播p 流化实时采集编码的音视频媒体数据n 文件轮播p 将预编码存储的音视频媒体数据按照一定的播出时间进行编排,以播放列表的形式定时循环播出o 实时交互式流媒体应用n 视频电话n 视频会议n 5网络流媒体的特性o 端到端延时约束n 流媒体点播p 起始延时:10sp 类VCR操作(例如拖动进度条):12sn 流媒体直播p 可容忍几十秒的延时n 交互式会话p 150ms goodp 400ms OKo 时序性约束n 流媒体数据必须按照一定的顺序连续播放o 一定程度的容错性6网络流媒体面临的问题o 由流媒体数据及其承载这些数据的传输网络两方面的特性所决定o
3、流媒体数据n 数据量庞大,必须经过压缩编码后才能在网络上进行传输和存储n 压缩的视频数据在解码时存在数据依赖性问题p 帧内依赖p 帧间依赖nI,P,Bn 压缩的视频数据,其码率可能随视频场景的变化而动态波动n 实时性约束7网络流媒体面临的问题o IP网络n 基于分组交换的无连接网络n IP分组在一系列的路由器之间进行存储转发n 可能因为路由器缓冲区溢出而发生分组丢失n 尽力而为p 端到端带宽、时延等均不能保证n 常用传输协议p UDPp TCPn慢启动n拥塞避免n TCP友好8网络流媒体面临的问题o 假定一n 客户机与服务器之间具有足够大的带宽n 客户机中具有足够大的缓存空间o 则n 任何时候
4、用户提出播放请求时,相应的媒体内容都能够立即传递到客户机的缓存中来n 从用户体验的角度能够达到流媒体的效果o 但是n 上述假设是不现实的9网络流媒体面临的问题o 假定二n 客户机与服务器之间的带宽有限n 客户机中具有足够大的缓存空间o 则n 压缩音视频数据的解码需要一定的缓存空间和时延n IP网络中带宽的波动和随机丢包等也需要通过增加缓冲区来进行控制o 但是n 流媒体端到端的延时约束使得多余的缓存空间失去利用价值10网络流媒体面临的问题o 假定三n 客户机与服务器之间具有足够大的带宽n 客户机中的缓存空间有限o 则n 流媒体播放的时序性约束使得需要进行传输中的流量控制,多余的带宽资源也失去了利
5、用价值11网络流媒体面临的问题o 目前的实际状况n客户机与服务器之间的带宽有限,且存在动态波动和丢包等现象n客户机中的缓存空间有限n压缩的视频数据在解码时存在数据依赖性问题o 因此需要解决n拥塞控制n流量控制n差错控制nQoS自适应n音视频同步no 需要设计n媒体编码、存储格式n媒体描述、传输、控制协议n12网络流媒体系统结构o 基本系统n 流媒体服务器n 流媒体播放器n IP 网络o 扩展n 在IP网络中,可加入一系列应用层中间系统,例如缓存、转码等等流媒体服务器流媒体播放器IP网络流媒体播放器13细化14需规范的格式和协议o 媒体编码格式o 媒体传输协议o 媒体描述协议o 媒体会话控制协议
6、o 媒体存储格式15视频编码格式o 视频编码n 定义压缩视频码流的格式(语法和语义)n 解码器和编码器必须就压缩视频码流的格式及其解释达成一致,因此需要制订相应的标准n 主要视频编码标准p MPEG1、MPEG2、MPEG4、H.264、VC1、AVS编码器压缩视频码流原始视频数据摄像机解码器重构视频数据显示器16视频编码格式o 主流编码标准压缩视频码流的基本格式(以AVS为例)n不同语法元素之间通过起始码来进行分割和标识p 起始码前缀(24比特,0 x000001)起始码值(8bit)序列头I1P4B2B3P7B5B6IPBBPBBGOP1.GOP2宏块图像头条带头1宏块.宏块条带头2宏块.
7、条带:最小独立解码单元17视频编码格式o AVS起始码值18编码器的输出o 编码器输出压缩视频码流的去向n以文件的形式进行存储n实时通过IP网络传输到cliento 网络传输n需要相应的传输层协议来支持流媒体的实时传输nRFC3550中定义了RTP协议(实时传输协议)o 文件存储n可以将编码器的输出码流直接存储为文件,通常称为ES流文件n然而为了方便多种媒体的复用、快速检索/定位、流化等,还需要对这些码流进行封装,定义相应的文件封装和存储格式编码器压缩视频码流IP网络文件19流媒体网络传输o RFC3550中实际上定义了两个紧密相关、配合使用的协议n RTP(实时传输协议)p 用于为音视频等具
8、有实时特性的流媒体数据提供端对端传送服务的传输层协议,所提供服务主要包括:净载类型识别、序列号、时间戳和传输监控信息等。n RTCP(RTP控制协议)p 与RTP配合使用p 监控流媒体传输的服务质量p 在一次流媒体会话的多个参与者之间传递信息20RTP协议头格式21RTP协议头字段o Vn版本号o Pn净载填充标识o Xn协议头扩展标识o CCnCSRC计数o SSRCnthe synchronization sourceo CSRCnthe contributing sources for the payload contained in this packet22RTP协议头字段o Mn
9、含义有相应的profile来定义n 通常用于标识帧的边界:值为1则表示当前RTP包是组成一个视频帧数据的最后一个分组,值为0则表示当前帧数据还没有完全到达o PT(Payload Type,净载类型)n 当前RTP包中所承载数据的媒体类型p 例如:AVS-P2(AVS视频),AVS-P3(AVS音频),H.264视频,MP3音频,n RFC3551中定义了若干已知主流媒体编码类型的Payload Type编号n RTP净载媒体类型还可以通过别的途径来进行协商和通知23RTP协议头字段o Sequence numbern RTP包序列号,按顺序依次递增n 接收端可使用该sequence numb
10、er的值来检测丢包并重新排序24RTP协议头字段o timestamp(时间戳)n 当前RTP包净载数据中第一个字节数据的采样时间n 不同类型媒体可能采用不同的时间单位,通过带外信令或者净载类型profile等形式进行协商p 例如,多数视频标准RTP净载格式中规定采用1/90000秒作为RTP头中timestamp的时间单位n 不同媒体流可以采用不同的随机起始偏移,因此在呈现时不能通过直接比较它们的时间戳值来进行同步,而是需要共同参考一个墙上时钟(wallclock)来进行同步。Wallclock通过RTCP协议中SR(源报告)的形式进行传递。25RTCPo RTCP是一个与RTP协同工作的控
11、制协议nRTP:传输协议nRTCP:控制协议o 参与流媒体会话的成员之间通过周期性地交换RTCP分组来反馈传输质量和成员信息nQoS反馈p以SR或RR的形式发送pRTP分组丢包率p累积的丢包数p分组到达延时p分组到达延时抖动n参与者标识(文本形式)n控制分组的比例n媒体间同步pWallclock偏移值26RTP数据的承载o RTP仅提供一些与流媒体时间特性相关的字段,本身并不能为终端用户提供QoS保证o 相关功能需要通过承载它的下层传输协议、以及上层应用程序来完成o 鉴于流媒体传输的实时性,通常将RTP承载于UDP之上n通过将不同的媒体流(例如音频流、视频流)RTP包分别发送至同一IP地址的不
12、同UDP端口,来实现音视频数据的复用o 但是也可以采用可靠传输协议例如TCP来承载RTPn需要将来自不同媒体流的RTP包复用到同一个TCP连接的字节流之中n需借助于RTSP协议来进行控制(稍后讲述)27RTP净载格式o 定义如何将由编码器输出的压缩码流打包至RTP包的净载中去o 不同的媒体编码类型可以定义不同的RTP净载格式nRFC2190:RTP payload for H.263nRFC2250:RTP payload for MPEG1/2nRFC3016:RTP payload for MPEG4nRFC3984:RTP payload for H.264no 主要考虑n对网络的适应能
13、力编码器压缩视频码流RTP 打包器RTP分组流IP网络28RTP净载格式举例o AVS视频RTP净载格式n 引入NAL(网络抽象层)单元的概念n 将AVS-P2视频比特流中每两个相邻的起始码前缀之间的数据映射到一个NAL单元n 以NAL单元为单位进行RTP打包,包括3种RTP包类型p 单NALU包n一个RTP包中包含且仅包含一个NALU数据p 复合NALU包n一个RTP包中包含多个完整的NALU数据p 分割NALU包n一个NALU中的数据被分割并打包到多个RTP包之中n一个RTP包中不能包含多个NALU的部分数据29RTP净载格式举例o AVS视频中的NAL单元类型30流媒体文件格式o 为什么
14、要进行文件封装n 多种媒体流(视频、音频、文本)的复用n 媒体流管理与编辑n 媒体检索和定位,支持类VCR操作p 快速定位并访问到某一帧数据n 支持本地硬盘、光盘播放n 支持网络流媒体播放o 常见流媒体文件格式n AVIn WMVn RMn MOVn MP431流媒体文件格式o ISO Base Media File Formatn 来源于于Apple的quicktime文件格式n 在ISO的JPEG-4和JPEG-2000系列标准中进行了规范p ISO/IEC 14496-12 for MPEG-4p ISO/IEC 15444-12 for JPEG 2000n 为流媒体文件封装提供了一种
15、基本格式n 是一种面向对象的文件格式n MP4、H.264、AVS等的文件格式都基于该基文件格式进行制订32ISO Base Media File Formato 文件结构n有一系列的称之为box的对象组成nbox内可以嵌套boxn文件中所有数据都包含于某个box,没有不在box中的数据33ISO Base Media File Formato 典型结构34ISO Base Media File Formato moovn 元数据对象(box)p 用于描述文件中所包含的媒体数据n 为每一个媒体流创建一个媒体轨道p Video trackp Audio trackp n 为每一个需要打包流化(通
16、过IP网络流式传输)的媒体轨道创建一个提示轨道(hint track)p 用于指示如何对该轨道数据内容进行RTP打包p 需要了解相应轨道媒体的RTP净载格式35ISO Base Media File Formato mdatn 媒体数据对象p 存储各轨道实际的媒体数据n 可以是自包含的,即与moov box位于同一个文件n 也可以存储于不同的文件n 各轨道媒体数据可以分别连续存储,也可以按照时间顺序交织存储n 交织有利于数据的快速访问36ISO Base Media File Format37ISO Base Media File Format38ISO Base Media File For
17、mat39ISO Base Media File Format40流媒体服务器o 为什么需要流媒体服务器n如果只是一个client、一个server一对一通信,则没有必要用流媒体服务器n然而事实上同一个server需要为大量的client提供服务o 流媒体服务器的作用n接收来自client的播放请求,为其发送相应的音视频码流n数据缓冲n数据调度n流量控制nQoS自适应控制n流媒体服务器41流媒体服务器o 基本结构42媒体描述协议o 流媒体服务器通过什么方式来发布自己拥有的媒体信息?o Client靠什么来向流媒体服务器索取自己想要的媒体数据?o RFC2327中定义了一个会话描述协议:SDP(
18、Session Description Protocol)n 用于描述一个多媒体会话n 主要包括p 会话名称及用途p 会话激活的时间p 会话中所包含的媒体流p 用于接收媒体的相关信息,如地址、端口号、格式等等p 43SDPo 媒体信息n媒体类型p音频p视频pn传输协议pRTP/UDP/IPpRTP/TCP/IPpH.320pn媒体编码格式pMPEG-1/2/4pH.264pAVSpn目的地址n端口号n44SDPo 体现为一行行的文本字符串,形式为n=o 会话描述o 时间描述45SDPo 媒体描述46SDPo 举例一47SDPo举例二nv=0no=QTSS_Play_List 416261492
19、7 4162633353 IN IP4 210.77.27.98ns=C:Program FilesDarwin Streaming ServerPlaylistsavsrelayavsrnc=IN IP4 127.0.0.1nt=0 0na=x-broadcastcontrol:RTSPnm=video 20000 RTP/AVP 96na=rtpmap:96 AVS1-P2/90000na=control:trackID=1na=cliprect:0,0,352,288na=fmtp:96 profile-level-id=2042;sprop-parameter-sets=sCBCgsA
20、JAAjAABgAoAAA;packetization-mode=1nm=audio 20002 RTP/AVP 97na=rtpmap:97 MPA/48000na=control:trackID=2na=mpeg4-esid:348SDPo SDP信息的生成n 对于流媒体现场直播p 在初始化实时编码器(RTP打包器)时首先生成一个sdp文件,放置到流媒体服务器的相应目录之下n 对于文件轮播p 在编辑播放列表时,流媒体服务器调用相应工具生成一个sdp文件,放置到流媒体服务器的相应目录之下n 对于流媒体点播p 在封装流媒体文件时,在相应的box中写入相关的媒体描述信息p 在接收到来自的客户的请
21、求播放消息时,流媒体服务器从文件中读取相关数据并生成SDP信息49SDPo 流媒体节目的访问n 广播节目p 在客户端播放器中,通过输入节目所对应SDP文件的URL地址来进行播放,例如nRTSP:/ 点播节目p 在客户端播放器中,通过直接输入节目文件名对应的URL地址来进行播放,例如nRTSP:/ 当然也可以在web页面中直接嵌入上述URL来启动播放器n SDP信息通常通过RTSP协议传递至客户端50客户端与服务器的交互o 寻找哪个网站有什么样的媒体节目n通过p搜索引擎p门户网站pn得到p节目的URL:RTSP:/ 通过会话控制协议与流媒体服务器进行交互n获取媒体描述信息n根据媒体描述信息从服务
22、器接收媒体数据(RTP包)n类VCR操作51流媒体会话控制协议o RFC2326中定义了一个流媒体会话控制协议:RTSP(Real Time Streaming Protocol)n 应用层协议n 信令协议p 交互式问答n 用来建立和控制一个或多个时间同步的连续音视频媒体流的会话协议n 通过在客户机和服务器之间传递RTSP会话命令,可以完成诸如请求播放、开始、暂停、查找、快进和快退等VCR控制操作。n 相当于一个远程流媒体服务器控制器52RTSPo 与HTTP具有类似的语法和操作,大多数HTTP的扩展机制都可以加入到RTSP,但也存在以下区别n 与HTTP的无状态特性相反,RTSP服务器在几乎
23、所有情况下都缺省需要维持状态信息。n RTSP服务器和RTSP客户机都可以主动发起请求。n 通常情况下采用与数据传输协议不同的其它协议来传输RTSP会话命令,称为带外带外信令方式53RTSPo 主要命令n DESCRIBEp 向流媒体服务器请求SDP信息n SETUPp 使服务器分配媒体流资源,并启动一个RTSP会话。n PLAYp 在SETUP所启动会话并分配的某个流上开始数据传输。n PAUSEp 暂时中止一个流的数据传输而不释放服务器资源n TEARDOWNp 释放服务器上的流资源,结束RTSP会话。54RTSPo 通常采用可靠的TCP协议来建立RTSP会话连接,并传输RTSP会话命令(
24、信令)o 通过RTSP信令来传递SDP信息o RTP数据的传输n RTP over UDPp 此时RTSP命令、音频RTP包、视频RTP包等分别通过不同的连接进行传输nRTSP over TCPnVideo/audio over UDP using different portsn RTP over TCPp 此时实际上是将音视频RTP数据包按照时间顺序交织之后,再与RTSP命令一起通过RTSP所建立起来的同一条TCP连接进行传输p 因此实际上是:RTP over RTSP over TCP55RTSPo 通过SETUP命令来决定采用UDP还是TCP传输n UDPp CS:nSETUP rts
25、p:/127.0.0.1/abc.sdp RTSP/1.0nCSeq:302nTransport:RTP/AVP/UDP;unicast;client_port=4588-4589n TCPp CS:nSETUP rtsp:/127.0.0.1/abc.sdp/trackID=1 RTSP/1.0nCSeq:2nTransport:RTP/AVP/TCP;unicast;interleaved=0-156RTSPo 举例n TCP_over_RTSP会话示例.txt57ISMA体系结构H.264/AVC(ISO/IEC 14496-10)MPEG-4(ISO/IEC 14496-3)VideoAudioISMA 2.0MPEG-4(ISO/IEC 14496-2)MPEG-4(ISO/IEC 14496-3)ISMA 1.0AVC FFMP4 FFISO Base Media FFISMA 2.0ISMA 1.0IPUDPTCPRTPPayload FormatsRTSPSDP媒体格式媒体存储媒体传输媒体描述/控制58重要通知o 期末考试安排n 时间p 6月13日(周五)上午8点10点n 地点p 待定o 课程作业提交时间n 本周五(5月30日)晚上12点之前n 请没有提交作业的同学注意截至时间
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。