这里因为一个项目需要用到SRS服务器,而且之后也想阅读一下SRS服务器的源码,所以需要对流媒体行业以及流媒体服务器有一个大致的了解。而我本人对这个领域不是太了解,这里花费一些时间,对这个领域的部分技术进行一个简单的了解。
流媒体服务器就是处理流媒体文件的服务器。流媒体服务器用在远程教育,视频点播、网络电台、网络视频等方面。直播过程中就需要使用流媒体服务器,一个完整的直播过程,包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放等过程,流媒体服务器主要负责采集,传输和播放等过程。流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕。
新时代的发展,让我们看到视频行业在互联网的重要作用。
媒体和娱乐行业:直播时代,RTMP/FLV/HLS,SRS,NGINX-RTMP
通信和设备行业:RTC,loT和5G,GB28181/WebRTC,janus,OWT
技术和时代的发展,让互联网从图文走向视频,直播和WebRTC的边界已模糊,新的视频,新的场景,需要新的开源服务器。
这里我们以流媒体的主要应用场景来讲述主要的技术架构
Domain | Tech | OpenSource | Commercial |
---|---|---|
Camera(采集终端) | Camera | Camera,Mobile Phone |
Video Codec(视频编解码) | H.264 | x264,openh264,FFmpeg | Hardware |
Audio Codec(音频编解码) | AAC | fdkaac,FFmpeg | Hardware |
Encoder(编码) | System | OBS,FFmpeg | Haivision |
Transport(传输) | RTMP,FLV,HLS | NGINX-RTMP,SRS | Wowza,AMS |
Player(播放) | System | Mobile Phone, Chrome, Safari, Edge |
Interactive(互动) | RTC | WebRTC |
H.264:
简单来说:就是一种视频编码压缩技术,其最大的优势也是其很高的数据压缩比例,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,MPEG-4的1.5~2倍。
具体参考百度百科和H.264原理的博客,个人认为是深度好文。
H.264_百度百科 (baidu.com)
看完就懂的《H264编码原理及框图》_MaxLinux1024的博客-CSDN博客_视频编码原理框图
实现方式
x264:是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编解码器之一。
openh264:同样是一个开源的H.264的编解码器
FFmpeg:同样可以做到编解码,但是它集成了记录,数字音频,视频等转换为流的开源计算机程序,相比于上述两个编码技术来说,使用返回要更加的广泛。**
硬件:直接用硬件实现。
AAC:
简单来说:一种高级的音频编码技术,有两种,一种是MPEG-2 AAC,一种是MPEG-4 AAC。
具体参考百度百科。AAC_百度百科 (baidu.com)
实现方式
硬件:Haivision公司有着各种音视频编解码的硬件。
OBS:一款开源的免费的视频直播软件,几乎可以直播所有的直播平台。
FFmpeg:是一个免费的开源程序库,一个命令行工具软件。
RTMP:
简单来说:是一种实时消息传输协议,基于TCP,所以速度起始不够快,会有延迟,但是可靠。
具体参考百度百科:rtmp_百度百科 (baidu.com)
FLV:
简单来说:是adobe公司推出的一种视频格式,一种在网络上传输的流媒体数据存储容器格式。
HLS:
简单来说:是一个由Apple公司实现的基于HTTP的媒体流传输协议,可以方便的透过防火墙或者代理服务器,可以很方便的利用 CDN 进行分发加速,并且客户端实现起来也很方便。很容易部署到HTML5上。
CDN:
简单来说:是一个内容分发网络,在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需要的内容,提高用户访问网站的响应速度。
实现方式
NGINX,SRS:两种流媒体服务器都是支持上述协议的。
Wowza,AMS:属于流媒体服务器的知名品牌公司。
手机,浏览器等
RTC:、
简单来说:实时通信,是实时音视频的一个简称,底层采用的RTP协议,传输层是UDP,而我们常说的RTC技术一般指的是WebRTC技术。
具体参考这篇知乎:RTC技术(WebRTC) - 知乎 (zhihu.com)
实现方式
Domain | Tech | OpenSource | Commercial |
---|---|---|
Camera(采集终端) | Camera | Camera,Mobile Phone |
Video Codec(视频编解码) | H.264 | x264,openh264,FFmpeg | Hardware |
Audio Codec(音频编解码) | Opus | libopus |
Encoder/Player(解码,播放) | 3A,CC,SVC | WebRTC |
Transport(传输) | RTP,RTCP,SRTP | janus,Mediasoup,OWT,SRS |
PSTN(公共交换电话网络) | SIP,RTP | Freeswitch |
Opus:
简单来说:是一种有损声音编码的格式,但是适用于网络上低延迟的即时声音传输。
具体参考百度百科:opus(声音编码格式)_百度百科 (baidu.com)
实现方式:
RTP:
简单来说:是一种实时传输协议,通常在UDP上运行RTP以便适用其多路节点和校验服务。
具体参考百度百科:实时传输协议_百度百科 (baidu.com)
RTCP:
简单来说:是RTP协议的控制协议,提供数据分发质量反馈信息。这是 RTP 作为传输协议的部分功能并且它涉及到了其它传输协议的流控制和拥塞控制。
具体参考rtcp_百度百科 (baidu.com)
SRTP:
简单来说:是安全实时传输协议,在RTP的基础上,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。
实现方式
**SIP:**会议发起协议,它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点。
Domain | Tech | OpenSource | Commercial |
---|---|---|
SRT(开源视频传输协议) | UDP,CC | Libsrt,FFmpeg,OBS,SRS |
GB28181(国标协议) | SIP,RTP | SRS,Camera |
DVR(数字硬盘录像机) | FLV,MP4,HLS | FFmpeg,NGINX-RTMP,SRS |
Transcoding(转码) | H.264, ACC | FFmpeg, x264, fdkaac |
security(安全) | HTTP Callback | SRS |
Management(管理) | HTTP API | SRS |
Cluster(集群) | System | SRS Edge/Origin Cluster |
互联网媒体中心基本上就是需要将上面两个情况都包含。
以上是对音视频领域的一个简单的扫盲,为后续继续学习做一个基础。