直播推流基础知识笔记

采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放

一.采集

音频采集 音频的采集过程主要通过设备将环境中的模拟信号采集成 PCM 编码的原始数据,然后编码压缩成 MP3 等格式的数据分发出去。常见的音频压缩格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。

图像采集 图像的采集过程主要由摄像头等设备拍摄成 YUV 编码的原始数据,然后经过编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。

二.处理

视频或者音频完成采集之后得到原始数据,为了增强一些现场效果或者加上一些额外的效果,我们一般会在将其编码压缩前进行处理。
视频 美颜、水印、路径、自定义
音频 混音、降噪、特效、自定义

三.编码和封装

1.编码

对流媒体传输来说,编码非常重要,它的编码性能、编码速度和编码压缩比会直接影响整个流媒体传输的用户体验和传输成本。

  • 常见的视频编码器:

    1)H.264/AVC

    2)HEVC/H.265

    3)VP8

    4)VP9

    5)FFmpeg

  • 音频编码器:Mp3, AAC等。

2.封装

把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起

  • 几种常见的封装格式:

1)AVI 格式(后缀为 .avi)

2)DV-AVI 格式(后缀为 .avi)

3)QuickTime File Format 格式(后缀为 .mov)

4)MPEG 格式(文件后缀可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)

5)WMV 格式(后缀为.wmv .asf)

6)Real Video 格式(后缀为 .rm .rmvb)

7)Flash Video 格式(后缀为 .flv)

8)Matroska 格式(后缀为 .mkv)

9)MPEG2-TS 格式 (后缀为 .ts)

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

四.推流到服务器

推送协议主要有三种:

  • RTSP(Real Time Streaming Protocol):实时流传送协议,是用来控制声音或影像的多媒体串流协议, 由Real Networks和Netscape共同提出的;
  • RTMP(Real Time Messaging Protocol):实时消息传送协议,是Adobe公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议;
  • HLS(HTTP Live Streaming):是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议;

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

RTMP协议基于 TCP,是一种设计用来进行实时数据通信的网络协议,主要用来在 flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括 Adobe Media Server/Ultrant Media Server/red5 等。
它有三种变种:

  • RTMP工作在TCP之上的明文协议,使用端口1935;
  • RTMPT封装在HTTP请求之中,可穿越防火墙;
  • RTMPS类似RTMPT,但使用的是HTTPS连接;

RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据。一个单一的连接可以通过不同的通道传输多路网络流。这些通道中的包都是按照固定大小的包传输的。

RTMP

五.服务器流分发

流媒体服务器的作用是负责直播流的发布和转播分发功能。

六.播放器流播放

主要是实现直播节目在终端上的展现。因为这里使用的传输协议是RTMP, 所以只要支持 RTMP 流协议的播放器都可以使用,譬如:

  • 电脑端:VLC等
  • 手机端:Vitamio以及ijkplayer等

你可能感兴趣的:(直播,直播,推流,RTMP,基础)