后端: 互动直播之WebRTC服务开源技术选型

本文介绍了直播基础知识,包括直播流程、重难点和常见传输协议。重点探讨了WebRTC技术,解释了为何选择WebRTC,阐述了打洞服务器和WebRTC服务器的作用,以及WebRTC的通信模式。最后,讨论了开源解决方案,如Jitsi、Kurento、Licode、Janus和Mediasoup,并给出了选型考虑因素。
摘要由CSDN通过智能技术生成

1 直播基础知识

最原始的直播系统其实并没有想象的那么复杂,无非就是主播端将音视频数据推送到服务器,观众端则从服务器拉取数据播放。

1.1 基本常识

1.1.1 基础概念

  • 推流  推流,是直播中的一个术语,意思是将流媒体数据推送到服务器。如何推流,关键就在于使用的推流协议。
  • 拉流  拉流,指的是 观众端 流媒体数据的拉取,同样也需要通过约定的拉流协议来拉取。
  • 视频帧  帧,是视频的一个基本概念,表示一张画面,如上面的翻页动画书中的一页,就是一帧。一个视频就是由许许多多帧组成的。
  • 帧率  帧率,即单位时间内帧的数量,单位为:帧/秒 或fps(frames per second)。如动画书中,一秒内包含多少张图片,图片越多,画面越顺滑,过渡越自然。 帧率的一般以下几个典型值:
  • 24/25 fps:1秒 24/25 帧,一般的电影帧率。
  • 30/60 fps:1秒 30/60 帧,游戏的帧率,30帧可以接受,60帧会感觉更加流畅逼真。
  • 85 fps以上人眼基本无法察觉出来了,所以更高的帧率在视频里没有太大意义。

色彩空间这里我们只讲常用到的两种色彩空间。

  • RGB RGB的颜色模式应该是我们最熟悉的一种,在现在的电子设备中应用广泛。通过R G B三种基础色,可以混合出所有的颜色。
  • YUV YUV是一种亮度与色度分离的色彩格式。早期的电视都是黑白的,即只有亮度值,即Y。有了彩色电视以后,加入了UV两种色度,形成现在的YUV,也叫YCbCr。 Y :亮度,就是灰度值。除了表示亮度信号外,还含有较多的绿色通道量。 U :蓝色通道与亮度的差值。 V :红色通道与亮度的差值。

因为人眼对亮度敏感,对色度不敏感,因此减少部分UV的数据量,人眼却无法感知出来,这样可以通过压缩UV的分辨率,在不影响观感的前提下,减小视频的体积。

  • 采样率采样率即采样的频率。采样率要大于原声波频率的2倍,人耳能听到的最高频率为20kHz,所以为了满足人耳的听觉要求,采样率至少为40kHz,通常为44.1kHz,更高的通常为48kHz。

  • 采样位数采样位数涉及到声波的振幅量化。波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号一般是不连续的,所以模拟信号量化以后,只能取一个近似的整数值,为了记录这些振幅值,采样器会采用一个固定的位数来记录这些振幅值,通常有8位、16位、32位。位数越多,记录的值越准确,还原度越高。 由于数字信号是由0,1组成的,因此,需要将幅度值转换为一系列0和1进行存储,也就是编码,最后得到的数据就是数字信号:一串0和1组成的数据。

  • 声道数声道数,是指支持能不同发声(注意是不同声音)的音响的个数。  单声道 :1个声道  双声道 :2个声道  立体声道 :默认为2个声道  立体声道(4声道) :4个声道

  • 码率码率,是指一个数据流中每秒钟能通过的信息量,单位bps(bit per second)  码率 = 采样率 * 采样位数 * 声道数

1.1.2 视频编码

编码可以大大减小音视频数据的大小,让音视频更容易存储和传送。视频编码格式有很多,比如H26x系列和MPEG系列的编码,这些编码格式都是为了适应时代发展而出现的。 其中,H26x(1/2/3/4/5)系列由ITU(International Telecommunication Union)国际电传视讯联盟主导。MPEG(1/2/3/4)系列由MPEG(Moving Picture Experts Group, ISO旗下的组织)主导。

1.1.3 音频编码

原始的PCM音频数据也是非常大的数据量,因此也需要对其进行压缩编码。 和视频编码一样,音频也有许多的编码格式,如:WAV、MP3、WMA、APE、FLAC等等。 在MP4视频中的音频数据,大多数时候都是采用AAC压缩格式。AAC是新一代的音频有损压缩技术,一种高压缩比的音频压缩算法。

1.1.4 音视频容器

我们熟悉的视频格式,如mp4、rmvb、avi、mkv、mov...,其实是包裹了音视频编码数据的容器,用来把以特定编码标准编码的视频流和音频流混在一起,成为一个文件。 例如:mp4支持H264、H265等视频编码和AAC、MP3等音频编码。

1.1.5 硬解码和软解码

在手机或者PC上,都会有CPU、GPU或者解码器等硬件。通常,我们的计算都是在CPU上进行的,也就是我们软件的执行芯片,而GPU主要负责画面的显示(是一种硬件加速)。

所谓软解码,就是指利用CPU的计算能力来解码,通常如果CPU的能力不是很强的时候,一则解码速度会比较慢,二则手机可能出现发热现象。但是,由于使用统一的算法,兼容性会很好。

硬解码,指的是利用手机上专门的解码芯片来加速解码。通常硬解码的解码速度会快很多,但是由于硬解码由各个厂家实现,质量参差不齐,非常容易出现兼容性问题。

1.2 基础直播流程

通过下面这个数据流程图,能清晰地看到整个直播的过程。

可以看到, 主播客户端 处理的事情,其实就是 短视频开发 中最重要的内容:

唯一不一样的地方,短视频会将封装好的数据保存到本地,直播则是通过  推流协议 将数据推送到服务器。

1.3 直播中的重难点

在直播中,有几个非常重要的地方,会直接影响直播效果,导致用户流失。

1.3.1 首屏时间

首屏时间,即从观众打开直播,到看到画面呈现出来的时间。影响这个时间的是 H264 编码中的一个概念: GOP 。 GOP :Group of Picture,即一组帧组成的一个序列。在 H264 中,分别有 I帧、P帧、B帧 三种帧类型。 GOP 就是由一个 I帧 和多个 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值