1、技术简介

1.1、Netty

java NIO类库的异步通信框架 ,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。

1.2、http-flv

定义:结合了RTMP的低延时,以及可以复用现在HTTP分发资源的流式协议。
通俗: 将音视频数据封装成FLV,然后通过HTTP协议传输给客户端。
传统的直播协议:

  • 使用Adobe的基于TCP的RTMP协议
  • 使用Apple的基于HTTP的HLS协议
  • Websocket-FLV方式的拉流

    1.3、TCP、http、socket

TCP: 属于传输层协议,建立连接需要三次握手,断开连接四次挥手
HTTP:属于应用协议。承载在TCP之上
Socket: 套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

打个比喻,网络是路,TCP是跑在路上的车,HTTP是车上的人。

1.4、视频传输协议详解(RTMP、RTSP、HLS)

RTMP:是由Adobe公司提出的,在互联网TCP/IP五层体系结构中应用层,RTMP协议是基于TCP协议的,也就是说RTMP实际上是使用TCP作为传输协议。TCP协议在处在传输层,是面向连接的协议,能够为数据的传输提供可靠保障,因此数据在网络上传输不会出现丢包的情况。

RTSP :是TCP/UDP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传输多媒体数据。

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于Http协议的的流媒体网络传输协议。是苹果公司QuickTime XiPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。


1.5、视频编码h264、h265

1.6、ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序