音频3A算法
AEC
回声消除(AEC)是指在二线传输的两个方向上同时间、同频谱地占用线路,在线路两个方向传输的信号完全混在一起,本端发信号的回波就成为了本端信号的干扰信号,利用自适滤波器可抵消回波以达到较好的接收信号质量,即为回声消除。
回声消除的原理就是利用接收到的音频与本地采集的音频做对比,添加反向的人造回声,将远端的声音消除。

ANS
背景噪声抑制(ANS)指的是将声音中的背景噪声识别并进行消除的处理。背景噪声分平衡噪声和瞬时噪声,平稳噪声频谱稳定,瞬时噪声频谱能量方差小,利用噪声的特点,对音频数据添加反向波形处理即可消除。

AGC
自动增益控制(AGC)主要用于调整音量幅值,提高语音通信系统在带噪声环境中的性能。人们正常交谈的音量在 40-60dB 之间,低于 25dB 的声音听起来很吃力,而超过 100dB 的声音会让人感到不适,AGC 的作用就是将音量调整到人接受的范围。

流媒体服务器分类
1、Mesh:每个端都与其它端互连,5个浏览器,二二建立P2P连接,每个浏览器与其它4个建立连接,总共需要10个连接,CPU使用率高,一般这种架构只能支持4~6人左右,优点是没有中心节点,实现很简单
2、MCU (MultiPoint Control Unit):每个浏览器仅与中心的MCU服务器连接,MCU服务器负责所有的视频编码、转码、解码、混合等复杂逻辑,适合多人视频会议,MCU服务器性能要求高
3、SFU(Selective Forwarding Unit):中心节点只负责转发,每个端需要建立一个连接用于上传自己的视频,同时还要有N-1个连接用于下载其它参与方的视频信息

SRT
安全可靠传输协议(Secure Reliable Transport),SRT是时下非常受欢迎的开源低延迟视频传输协议,SRT解决了复杂的传输时序问题,SRT可以减少延迟,消除中心瓶颈,并降低网络成本。

GPU
图形处理器(英语:graphics processing unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是专门做图像和图形相关运算工作的微处理器。

PGP
(英语:Pretty Good Privacy,中文翻译“优良保密协议”)是一套用于消息加密、验证的应用程序,采用IDEA的散列算法作为加密与验证之用,由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成

DNS
(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。

RTMP
RTMP是(实时消息传输协议)(Real Time Messaging Protocol)的首字母缩写。该协议基于TCP,是一个协议族,是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。与HTTP一样,都属于TCP/IP四层模型的应用层。RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据。

RTSP
RTSP(Real Time Streaming Protocol)是实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议

RTP
RTP(Real-time Transport Protocol)实时传输协议是一个网络传输协议,基于UDP协议,RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTSP协议)。

RTCP
RTP(RTP Control Protocol)控制协议,是实时传输协议(RTP)的一个姐妹协议。RTP 使用一个 偶数 UDP port ;而RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。RTCP与RTP联合工作,RTP实施实际数据的传输,RTCP则负责将控制包送至电话中的每个人。其主要功能是就RTP正在提供的服务质量做出反馈,负责。

SRTP
SRTP(Secure Real-time Transport Protocol)即安全实时传输协议,其是在实时传输协议RTP基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。
在 WebRTC 中,通过引入 DTLS 对 RTP 进行加密,使得媒体通信变得安全。通过 DTLS 协商出加密密钥之后,RTP 也需要升级为 SRTP,通过密钥加密后进行通信。

RTP,对音视频数据加了报文头信息,对数据进行格式化,再交给UDP发送。
SRTP,是在RTP的基础上做了加密。
RTCP,RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送,RTCP的主要功能是为RTP所提供的服务质量(Quality of Service)提供反馈,失败重传等。
SRTCP,在RTCP基础上做了加密和身份认证。

SSL
SSL(Secure Sockets Layer 安全套接层协议)协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。

TLS
(Transport Layer Security)传输层安全性协议,及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障

DTLS
(Datagram Transport Layer Security)即数据包传输层安全性协议。传输层的TCP、UDP协议本身都不具备安全性。SSL/TLS协议是基于TCPsocket,在传输层和应用层之间构建了一个端到端的安全通道,保证了传输数据的加密性。但是SSL/TLS协议并不能用于UDP协议,而UDP也有安全传输的需求,于是产生了DTLS协议(DatagramTLS)。即DTLS的作用为给UDP提供端到端的安全通道,就像SSL/TLS对TCP的作用一样。并且DTLS尽可能参考了SSL/TLS协议的安全机制,在具体实现上复用了70%的TLS代码。DTLS的传输阶段分为两个:握手阶段和握手建立之后的传输应用数据阶段。

HTTP-FLV
HttpFlv就是http+flv ,将音视频数据封装成FLV格式,然后通过 HTTP 协议传输给客户端。

V4L2
是Video for linux2的简称,为linux中关于视频设备的内核驱动,是linux上用于采集图片、视频、音频数据的一套框架

ALSA
(Advanced Linux Sound Architecture,高级Linux声音架构),Linux的音频接口,包括alsa驱动程序和用户API。alsa驱动程序,是Linux内核给声卡驱动程序提供的标准,用户API,是Linux给需要声音的播放和采集功能的用户程序提供的标准。

WebRTC
google开源项目,WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。
无论终端运行环境是浏览器、桌面应用、移动设备(Android或iOS)还是IoT设备,只要IP连接可到达且符合WebRTC规范就可以互通。

SDP
(SessionDescriptionProtocol),包含本端支持的编码格式等信息,参与视频通讯的双方必须先交换SDP信息,这样双方才能知根知底,而交换SDP的过程,也称为"媒体协商";
为会话通知、会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述。

ICE
交互式连接创建(Interactive Connectivity Establishment),一种综合性的NAT穿越的技术。集成各种NAT穿透技术,如STUN、TURN(Traversal Using Relay NAT,中继NAT实现的穿透)、RSIP(Realm Specific IP,特定域IP)等。该framework可以让SIP的客户端利用各种NAT穿透方式打穿远程的防火墙。

SIP
SIP(Session Initiation Protocol)是一个基于文本的应用层信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。

NAT
(Network Address Translation 网络 地址映射)是将 公 网地址映射为私网 地址。而能够进行映射的网络装置被称为 NAT 路由器。当我们检测到一端是端口受限锥型一端是对称型或者两端都是对称型,那肯定是无法穿越的。推荐一个NAT检测工具:NatTypeTester
NAT类型一般分为以下4种:

  1. Full Cone NAT1 (完全圆锥型):这是最宽松的网络环境,IP和端口通常都不会受限。
  2. Address Restricted Cone NAT2 (地址限制圆锥型):相比NAT1 IP会受限,而端口不受限。
  3. Port Restricted Cone NAT3 (端口限制圆锥型):相比NAT2,NAT3 又增加了端口限制,也就是说IP、端口都会受限。
  4. Symmetric NAT4 (对称型):具有端口受限锥型的受限特性,内部地址每一次请求一个特定的外部地址,都可能会绑定到一个新的端口号。也就是请求不同的外部地址映射的端口号是可能不同的。这种类型基本上就告别 P2P 了。

STUN
STUN 协议(Simple Traversal of UDP Through NATs) 即用 UDP简单的穿透 NAT 作为一个完整的 NAT 穿透解决 方案。

网络穿透,即 NAT 穿透, 能够让公网机器找到私网机器,并提高下载速度。穿透的本质是给一个 NAT 路由器的公网 IP 地址与端口发送报文数据,对应私网机器能够收到报文数据。

TURN
英文全称是Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT,即使用中继穿透NAT:STUN的中继扩展

coturn
Coturn集成了stun+turn协议,实现NAT检测,穿透就需要通过stun协议, NAT检测无法进行穿越时就需要通过turn服务进行流媒体的转发了,而coturn就是将两者协议进行整合并进行择优优化

CDN
CDN(Content Delivery Network内容分发网络)是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

FLV
FLV(Flash Video)流媒体格式是一种新的视频格式,传统视频格式rm,mp4等格式,如电脑上没有相关解码器或者相关播放器则无法播放,一般操作系统都带有Flash播放软件,将各类视频文件转换成Flash视频文件,使得网络观看视频文件成为可能,现各视频网站大多使用的是FLV格式。

HLS
HLS(HTTP Live Streaming)是基于HTTP的自适应码率流媒体传输协议,是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件
在一个完整的流媒体服务框架中,角色就是"两端加一服"。推流端、拉流端加上媒体服务器,RTMP 可以用在双端,但 HLS 只能用在拉流端。

RTMP、RTSP、WebRTC和SRT区别
RTMP:是Adobe的私有协议,传输的是flv、f4v格式流,一般在TCP的一个通道传输命令和数据,RTMP主要用于互联网音视频传输,它使用的是TCP传输,因为互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低,延时3s左右,主要用于直播场景;
RTSP:是公有协议,传输的是ts、mp4格式流,一般需要2-3个通道,命令和数据通道分离,RTSP+RTP主要用于IPTV,原因是传输数据使用的是UDP,在网络环境比较稳定的情况下,传输效率是比较高的,用于实时性高的音视频通话;
WebRTC:google开源,使用RTP分装码流,信令遵守ICE框架,走自定义信令,码流采用SRTP进行加密,延迟在100-200ms,其本质是p2p,适合视频会议场景;
SRT:SRT是基于UDT的协议,UDT是基于UDP,拥塞控制和数据可靠性控制机制,纠错机制等,SRT协议具有抗丢包、抗拥塞、抗抖动等特性,用于高清实时音视频业务。