流媒体学习笔记

流媒体传输技术

1. 音视频流程

视频采集→视频预处理→视频编码与封装→数据的存储/传输→视频解封装/解码→视频后处理→视频输出。

 

2.流媒体是什么

视频格式:本地影像视频、网络流媒体影像视频。

音视频涉及到的核心技术主要有:视音频编解码、噪音抑制、回声消除、自动增益、前向纠错、丢帧补偿、抖动缓冲、CDN内容分发、网络流自适应等。

流媒体是指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件,它在播放前并不下载整个文件,只将开始部分内容存入内存,其他的数据流随时传送随时播放,只是在开始时有一些延迟,其关键技术就是实时流式传输。流式传输方式则是将整个A/V及3D等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。

 

3.流媒体基本术语

帧 音频跟视频流单位,比如一个视频帧,就对应一副画面

码率 指的是单位时间内,音视频流数据量的大小。

码率越大,音质or画质就越好

帧率 指的是单位时间内,音视频帧的个数。

帧率越大,单位时间内采样越高

转码 将高码率的音视频流,转为低码率的音视频流。

目的是保证部分网络带宽较差的用户也可以顺利观看

 

4.流媒体的传输形式:渐进式下载和实施流媒体。

 1.渐进式下载: 不必等到全部下载完成后在播放,可以边下载边播放,播放完成后,整个文件会保存下来。

 2.实时流媒体:一边接收数据包一边进行播放,本地不保留文件副本,数据总是实时传送的。用户可以快进快退,不过,实时流媒体播放必须保证数据包的传输速度大于文件的播放速度,否则影响播放效果。 

 

5.流媒体传输协议

TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中:

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

流媒体协议:(RTP、RTCP、RTSP、MMS、HLS、HTTP progressive streaming)

 

https://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE

实时流媒体传输协议:

1.RTP协议

  RTP 协议由实时传输协议RTP(Real-time Transport Protocol)和实时传输控制协议RTCP(Real-time Transport Control Protocol)两部分组成。

  RTP 协议基于多播或单播网络为用户提供连续媒体数据的实时传输服务;RTCP 协议是 RTP 协议的控制部分,用于实时监控数据传输质量,为系统提供拥塞控制和流控制。

  每一个 RTP 数据包都由固定包头(Header )和载荷(Payload)两个部分组成,其中包头前12个字节的含义是固定的,而载荷则可以是音频或视频数据。

2.MMS

3.HLS(HTTP Live Streaming):Apple的动态码率自适应技术。只请求基本的HTTP报文,可以穿过任何允许HTTP数据通过的防火墙。

可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

4.RTMP(Real Time Messaging Protocol):实时消息传输协议。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。

 

6.流媒体流式传输

1.顺序流式传输(progressive streaming):期望音视频数据无错误无丢失顺序的从一端传输到另一端,一般采用可靠的 tcp 方式传输。 

用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间根据用户连接的速度做调整。适合高质量的短片段,如片头、片尾和广告。是一种点播技术。

2.实时流式传输(real time streaming):期望音视频数据实时的的从一段传输到另一端,一般采用 udp 方式传输。

保证媒体信号带宽与网络连接匹配,使媒体可被实时观看到。

7.流媒体技术原理(关键词:缓存,协议)

流式传输的实现需要缓存。

因为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程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器。

 

8.流媒体相关技术

(1)智能流技术:自动检测网络状况,并将音视频的属性调整到最佳,使用用户收到与其网络速度相符的媒体流,从而获取最佳的用户体验。

(2)分流(splitting)技术:一般只在直播中使用。发送服务器将媒体流发送到分布在各地的多个接收服务器,客户端可以就近访问服务器获得较高质量的媒体流,同时减少带宽使用。推流为将直播内容推送至服务器的过程;拉流为服务器已有直播内容,用指定地址进行拉取的过程。

(3)缓存(caching)技术:解决由于异步网络、网络延迟和抖动导致的数据包错序的问题,数据包先缓存在本地,而缓存系统使用环形链表结构丢弃掉已经播放的内容,防止缓存溢出。

(4)内容分发网络(CDN)技术 :架构在IP网络之上的一个内容叠加网,通过引入主动内容管理、全局负载均衡和内容缓存等技术,将用户请求的流媒体内容发布到距离用户最近的网络边缘,从而提供响应速度,减轻骨干网络的压力。

9.直播的实现

(1)直播中使用的流媒体协议

RTMP, Real Time Messaging Protocol(实时消息传输协议)。主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

HLS,HTTP Live Streaming(HTTP直播流技术),Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

(2)直播的模块划分

  1. 视频录制端:一般是电脑上的音视频输入设备或者手机端的摄像头或者麦克风,目前以移动端的手机视频为主。

  2. 视频播放端:可以是电脑上的播放器,手机端的 Native 播放器,还有就是 H5 的 video 标签等,目前还是已手机端的 Native 播放器为主。技术:HLS协议或RTMP协议(用途:视频播放)、ffmpeg(用途:使用RTMP协议时进行移动端视频解码)

  3. 视频服务器端:一般是一台 nginx 服务器,用来接受视频录制端提供的视频源,同时提供给视频播放端流服务。技术:RTMP协议(用途:上传视频流)、nginx rtmp-module 或 SRS(simple-rtmp-server)(用途:流服务器)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值