一、流媒体技术原理
流式传输的实现需要缓存。因为Internet以包传输为基础进行断续的异步传输,对一个实时A/V源或存储
的A/V文件,在传输中它们要被分解为许多包,由于网络
是
动态变化的,各个包选择的路由可能不尽相同,故到达客户端的时间延迟也就不等,甚至先发的数据包还有可能后到。为此,使用缓存系统来弥补延迟和抖动的影
响,并保证数据包的顺序正确,从而使媒体数据能连续输出,而不会因为网络暂时拥塞使播放出现停顿。通常高速缓存所需容量并不大,因为高速缓存使用环形链表
结构来存储数据:通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。
流式传输的实现需要合适的传输协议。由于TCP需要较多的开销,故不太适合传输实时数据。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息
,而用RTP/UDP来传输实时声音数据。
流式传输的过程一般是这样的:用户选择某一流媒体服务后,Web浏览器与Web服务器之间使用HTTP/TCP交换控制信息,以便把需要传输
的实时数据从原始信息中检索出来;然后客户机上的Web浏览器启动A/VHelper程序,使用HTTP从Web服务器检索相关参数对Helper程序初
始化。这些参数可能包括目录信息、A/V数据的编码类型或与A/V检索相关的服务器地址。
A/VHelper程序及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/VHelper程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器
。
二、流媒体播放方式
1.单播
在客户端与媒体服务器
之
间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,这种传送方式称为单播。每个用户必须分别对媒体服务器发送单独的查
询,而媒体服务器必须向每个用户发送所申请的数据包拷贝。这种巨大冗余首先造成服务器沉重的负担,响应需要很长时间,甚至停止播放;管理人员也被迫购买硬件
和带宽来保证一定的服务质量。
2.组播
IP组播技术构建一种具有组播能力的网络
,允许路由器
一次将数据包复制到多个通道上。采用组播方式,单台服务器能够对几十万台客户机同时发送连续数据流而无延时。媒体服务器只需要发送一个信息
包,而不是多个;所有发出请求的客户端共享同一信息包。信息可以发送到任意地址的客户机,减少网络上传输的信息包的总量。网络利用效率大大提高,成本大为下降。
3.点播与广播
点播连接是客户端与服务器之间的主动的连接。在点播连接中,用户通过选择内容项目来初始化客户端连接。用户可以开始、停止、后退、快进或暂停流。点播连接提供了对流的最大控制,但这种方式由于每个客户端各自连接服务器,却会迅速用完网络带宽。
广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流。例如,用户不能暂停、快进或后退该流。广播方式中数据包的单独一个拷贝将
发送给网络上的所有用户。
使用单播发送时,需要将数据包复制多个拷贝,以多个点对点的方式分别发送到需要它的那些用户,而使用广播方式发送,数据包的单独一个拷贝将发送给网络上的
所有用户,而不管用户是否需要,上述两种传输方式会非常浪费网络带宽。组播吸收了上述两种发送方式的长处,克服了上述两种发送方式的弱点,将数据包的单独
一个拷贝发送给需要的那些客户。组播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不需要它的那些客户,保证了网络上多媒体应用占用网络的
最小带宽。
分享到:
相关推荐
java 入门 java 入门 java入门非常的浅显易懂 java入门非常的浅显易懂 java入门 java 入门 java 入门 java 入门 java 入门 java 入门 java 入门 java 入门 java 入门 java 入门 java 入门 java 入门
这个“学校数据库ppt”显然是一份专门讲解数据库原理的教学资源,旨在以浅显易懂的方式帮助学习者理解复杂的数据库概念。下面将详细阐述数据库原理的一些关键知识点。 1. **数据库定义与类型**: - 数据库是一个...
这篇教程“java入门,非常的浅显易懂”旨在为初学者提供一个简单易懂的起点,帮助他们快速掌握Java编程的基础。 1. **Java简介**: Java是由Sun Microsystems公司(现已被Oracle收购)在1995年推出的。它的设计目标...
### 云计算普及知识—浅显易懂 #### 一、云计算的起源与核心问题 云计算的概念始于1997年,Google的创始人Larry Page和Sergey Brin为解决存储和处理互联网上所有网页的问题而提出了初步构想。当时他们面临的主要...
史上最浅显易懂的Git教程! 史上最浅显易懂的Git教程! 史上最浅显易懂的Git教程! 读过好几遍,非常赞,很适合初学者
### 设计模式之追MM——浅显易懂 #### 1. Factory(工厂模式) **概念解释:** 工厂模式是一种创建型设计模式,其目的是为了将客户端与具体的产品类解耦。在这种模式下,客户端无需了解产品的具体创建细节,只...
本资源"JSP入门经典 JSP的最浅显易懂的教程"显然是针对初学者设计的一份详尽的教学材料,旨在帮助那些想要涉足网站开发领域的学习者快速理解和掌握JSP的基本概念和应用。 首先,让我们从基础开始。JSP的核心思想是...
Qt是一个跨平台的C++应用程序框架,广泛用于开发具有图形用户界面的应用程序,同时也被用来开发非GUI...同时,教程作者也欢迎学习交流,并鼓励他人继续整理相关资料附在本文后,通过这种方式共同促进Qt的学习和普及。
Qt是一个开源的跨平台的C++图形用户界面应用程序框架。它被广泛用于开发具有图形用户界面的应用程序,也可以开发非GUI程序,例如命令行工具和服务器。...教程的编写方式通俗易懂,适合没有编程经验的新手学习使用。
经典的神经网络书籍,当前神经网络书中最浅显易懂的教程,供神经网络学习
CRFs的工作原理是构建一个条件概率模型P(y|x),其中y是标记序列,x是观测序列。与生成模型不同,CRFs不估计联合概率P(x,y),而是直接估计条件概率,从而能够利用更多的上下文信息来预测序列的标记。 在概率图模型中...
初学者很难找到一个由浅入深,学完后能立刻上手的Git教程。word文档有目录。方例阅读
C# 学习 教程 浅显 易懂,会的不要下,不会的最好也别下吧
本教程“循序渐进学C#”专注于为初学者提供一个易懂的学习路径,帮助他们逐步掌握C#的核心概念和技术。在学习C#的过程中,你需要理解以下几个关键知识点: 1. **基础语法**:包括变量、数据类型(如整型、浮点型、...
根据提供的文件信息,这份Qt Creator教程的内容非常丰富,涵盖了Qt和Qt Creator的多个方面,既适合初学者入门,也适合有一定基础的开发者进一步学习。接下来我将详细介绍这份教程中提及的知识点。...
FreeMarker教程(浅显易懂) 想学的可以下来看看。
史上最浅显易懂的 Git 教程