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

本文详细介绍了直播基础知识,包括直播流程、重难点、常见流媒体协议,重点探讨了WebRTC技术,包括为什么选择WebRTC、打洞服务器、WebRTC服务器及其通信模式。此外,还对比了Mesh、MCU和SFU架构,推荐了SFU的原因,并列举了多个开源WebRTC服务器方案如Jitsi、Kurento、Licode和Janus等,分析了选型考虑因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【转载请注明出处】:https://blog.youkuaiyun.com/huahao1989/article/details/106318054

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 基础直播流程

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

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

流程 详细操作
音视频数据采集 通过摄像头和麦克风采集
音视频滤镜 通过 OpenGL 和 SoundTouch 等工具实现音视频编辑
音视频编码 通过系统硬编码 或 FFmpeg 软编码,将数据编码为 H264 和 AAC
数据封装打包 将编码好的数据封装成指定的格式

唯一不

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值