流媒体总结

什么是流媒体?

1.流媒体是指采用流的方式在Internet播放的格式。

2.流媒体指在Internet/Intranet中使用流式传输技术的联系时基媒体。如:音频、视频或者多媒体文件。

3.流媒体实现的关键技术就是流式传输。

4.流媒体传输方式:

(1):实时流式传输

(2):顺序流式传输

什么是顺序流式传输?

顺序流式传输是顺序下载,在下载文件的同时用户可观看再线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间根据用户连接的速度做调整。

什么是实时流式传输?

实时流式传输指保证媒体信号带宽与网络连接配匹,使媒体可被实时观看到。实时流与HTTP流式传输不同,他需要专用的流媒体服务器与传输协议。

流媒体技术原理?

流式传输的实现需要缓存。因为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程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器,其基本原理如图所示。

常用流媒体格式

.mov .asf .3gp .viv .swf .rt .rp .ra .rm

流媒体播放方式

1.单播

——在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,这种传送方式称为单播。

2.组播

——IP组播技术构建一种具有组播能力的网络,允许路由器一次将数据包复制到多个通道上。

3.点播

——点播连接是客户端与服务器之间的主动的连接。在点播连接中,用户通过选择内容项目来初始化客户端连接。用户可以开始、停止、后退、快进或暂停流。

4.广播

——广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流。例如,用户不能暂停、快进或后退该流。广播方式中数据包的单独一个拷贝将发送给网络上的所有用户。

直播流具体代码实现思路(共十一步)

1.初始化,分配所有需要用到的资源。

2.登录视频服务器(难点-保持长连接。可以使用发送心跳包类似的方法实现长连接)

3.申请网络视频

4.接受网络视频的数据包

5.创建缓冲区,写缓冲区

6.创建播放线程,读缓冲区

7.解密,解密后通过回调把数据传给解码器进行解码

8.接受解密后的数据,进行解码(目前常用的解码器avcodec_decode_video2)

9.解码成功,得到解码后的数据YUV

10.把解码后得到的YUV数据转换为RGB格式

11.上屏显示

    原文作者:司徒新新
    原文地址: https://www.jianshu.com/p/8c46004cef1b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞