流媒体行业的技术检索

这里因为一个项目需要用到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:同样可以做到编解码,但是它集成了记录,数字音频,视频等转换为流的开源计算机程序,相比于上述两个编码技术来说,使用返回要更加的广泛。**

    • 具体参考百度百科:ffmpeg_百度百科 (baidu.com)
  • 硬件:直接用硬件实现。

音频编解码

AAC:

简单来说:一种高级的音频编码技术,有两种,一种是MPEG-2 AAC,一种是MPEG-4 AAC。

具体参考百度百科。AAC_百度百科 (baidu.com)

实现方式

  • fdkaac:是一个开源的MPEG-4和MPEG-2 AAC编解码器
    • 参考链接:fdk_aac | 用户手册 (t-head.cn)
  • FFmpeg:除了视频编码,ffmpeg也可以进行音频编解码。
  • 硬件:直接用硬件实现。

相关工具

  • 硬件: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)

实现方式

  • WebRTC:一种实时通信技术,可以让浏览器在不借助第三方插件的情况下,进行点对点的连接。

互联网实时通信

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)

实现方式:

  • libopus:开源的实现Opus的编解码器。

传输协议

RTP:

简单来说:是一种实时传输协议,通常在UDP上运行RTP以便适用其多路节点和校验服务。

具体参考百度百科:实时传输协议_百度百科 (baidu.com)

RTCP:

简单来说:是RTP协议的控制协议,提供数据分发质量反馈信息。这是 RTP 作为传输协议的部分功能并且它涉及到了其它传输协议的流控制和拥塞控制。

具体参考rtcp_百度百科 (baidu.com)

SRTP:

简单来说:是安全实时传输协议,在RTP的基础上,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。

实现方式

  • janus:Janus 是由 Meetecho 开发的 WebRTC 服务器,因此,除了实现与浏览器建立 WebRTC 媒体通信、与其交换 JSON 消息以及在浏览器和服务器端应用程序逻辑之间中继 RTP/RTCP 和消息的方法之外,它本身不提供任何功能。
  • Mediasoup:mediasoup 是完全兼容webrtc的高性能sfu服务器, 它由ts语言实现的master端和基于libuv的c++语言实现的work模块组成.
  • OWT:OWT 全称Open WebRTC Toolkit,是Intel基于WebRTC的端到端音视频SDK,是一款高性能,可靠和可扩展的实时通信解决方案。
  • SRS:国内开源的流媒体服务器。

PSTN

**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

互联网媒体中心基本上就是需要将上面两个情况都包含。


以上是对音视频领域的一个简单的扫盲,为后续继续学习做一个基础。

你可能感兴趣的:(扫盲区,ffmpeg)