流媒体推流原理

我们知道一个完整的直播过程,包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放等,这一过程所采用的技术,我们也称之为“流媒体技术”。其中推流是指使用推流工具等内容抓取软件把直播内容传输到服务器的过程。

▲微视播直播“流媒体技术”原理图

在讲解“推流”之前,我们先来说说采集,在商业活动领域,摄像机占据主流地位,足以应付大部分场面,选择带有直播功能的摄像机更是事半功倍。再说,视频采集后的处理、编码。

如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本。同样,对流媒体传输来说,编码也非常重要,它的编码性能、编码速度和编码压缩比会直接影响整个流媒体传输的用户体验和传输成本。

这就涉及到编码器的选择了,目前市面上直播编码器有无线、有线等非常多选择,根据不同场合选择即可。

所以,推流也可以理解为利用编码器将视频内容进行编码后推到服务器的过程。经过H.264编码压缩之后,1080P 的 7 s 视频大小只有708K,10Mbps的带宽仅仅需要500ms,可以满足实时传输的需求,所以原始视频势必要经过视频编码。

直播“推流”需要推流协议,对音视频数据使用传输协议进行封装,变成流数据,这是直播背后原理最重要的部分,下面介绍目前主流的推送协议以及它们在直播领域的优缺点。

RTMP

RTMP 是 Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间进行音视频和数据通信。

RTMP 是目前主流的流媒体传输协议,广泛用于直播领域,可以说市面上绝大多数的直播产品都采用了这个协议。

HLS

Http Live Streaming是由Apple公司定义的基于HTTP的流媒体实时传输协议。它的原理是将整个流分为多个小的文件来下载,每次只下载若干个。服务器端会将最新的直播数据生成新的小文件,客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。基本上,HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。

分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。

传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。

WebRTC

WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的 API。目前主要应用于视频会议和连麦中。

以下是三种主流协议的主要优缺点,可以按具体情况选择:

▲协议优缺点(可放大看哦~)

简单来说,通过编码器编码后的视频内容根据不同的场景选择合适的协议,推送到服务器上,服务器就可以对视频流进行转码直播了。由于篇幅限制,我们将会对编码器的具体使用单独整理成一篇来讲述,请持续关注我们哦~

猜你喜欢

转载自blog.csdn.net/datamining2005/article/details/95202750