音视频直播核心技术介绍

直播流程

在这里插入图片描述
采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 iOS、Android、Mac、Windows 等。
前处理:主要就是美颜美型技术,以及还有加水印、模糊、去噪、滤镜等图像处理技术等等。
编码: 就是音视频数据的压缩,便于传输,一般有软编码和硬编码,软编码有 x264、x265、openh264等,硬编码有 iOS 的 VideoToolBox、Android 的 mediacodec,Windows 的QSV 和NVIDIA等等。
推流: 就是数据传输从主播端到服务端的过程,推流需要不同的网络协议支持,如 RTMP 等。
转码: 为了让采集端的流适配各个平台端不同协议,一般都会在服务端进行转码处理,将视频文件转成不同格式,支持 RTMP、HLS 和 FLV 等不同的协议。
分发: 应对视频应用的高并发需求,采用 CDN(Content Delivery Network,即内容分发网络) 进行内容分发加速,实现高并发等能力。
拉流与解码: 拉流即使视频数据从服务端到观众端的过程,解码就是渲染播放,让观众看到主播的视频画面。

直播卡顿

一般造成直播卡顿的原因主要有设备、视频流、网络三个方向。

方向 原因
设备 设备硬件配置太差、播放器问题等
视频流 时间戳问题、编码参数、编码码率等
网络 推流端网络太差、播放端网络太差、服务端传输压力过大等

直播延迟

延迟主要指推流端到拉流端的时间差,在音视频生产消费过程中,在不同阶段都会产生延迟,如下表所示。

分类 产生原因
设备端上延迟 采集、前处理、编码、解码、渲染播放都可能产生延迟
设备端与服务端之间的延迟 推流端到服务端的延迟,服务端到拉流端的延迟
服务端与服务端之间的延迟 服务端的数据传输、数据排队、数据的处理等延迟

阿里云技术介绍一片直播延迟的源头,如下图:
在这里插入图片描述
声网技术介绍了直播延迟的不同程度所适应的应用场景,如下图:
在这里插入图片描述

视频分辨率

分辨率是用于度量图像内数据量多少的一个参数,通常表示成ppi。一般直观表现出视频的画面细腻程度。常见的分辨率如下表。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

首屏秒开

首屏耗时,指第一次点播播放后,肉眼看到画面所等待的时间。技术上指播放器解码第一帧渲染显示画面所花的耗时。通常所说的“秒开”,指点击播放后,一秒内即可以看到播放画面。首屏打开越快,说明用户体验越好。首屏耗时原因主要有DNS 解析、缓存获取首帧内容网络延迟播放器缓存策略等。

直播花屏与绿屏

花屏与绿屏由不同原因造成的,主要如下脑图罗列。
在这里插入图片描述

视频直播的痛点

观看视频直播最大的痛点主要包括:卡顿模糊延迟内容等。

流媒体

流媒体是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网络上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送,因此称为流媒体。

如果不使用此技术,就必须在使用前下载整个媒体文件。流媒体的本质上是原始画面,经过视频采集设备,然后通过编码器编码压缩,生成点播文件或者直播流,经过网络的传输,在各种终端进行解压解码,然后播放器进行画面渲染,最终展示在用户眼前。

流媒体可以分为点播和直播。

直播与点播

直播是有实时性的要求,直播的数据都是存在内存中,过时的数据会被丢掉。视频直播,一定是一个**“边生产,边传输,边消费”**的过程.

如果需要持久化的视频数据,就必须对直播流进行录制,转化为视频文件保存起来,这样就可以转化为点播的内容。
点播的内容源是静态的,直播的数据源是动态的。

实现点播需要解决视频转码流媒体下载两个问题;而实现直播本质需要解决视频数据编解码视频数据网络传输两个问题。

直播与RTC

RTC的一个具体应用是直播场景中的直播连麦(或PK),也就是低延时直播。普通直播,一般采用TCP协议(RTMP),使用CDN进行内容分发,会有几秒甚至十几秒的延时,主播和观众的互动只能通过文字短消息或送礼来进行。
而直播连麦,使用UDP协议(QUIC),内容实时传输,主播和观众可以进行音视频连麦互动,实时沟通,延时一般低至几百毫秒。
因此直播和 RTC 最大的区别主要体现再协议的使用以及音视频处理技术策略等。

项目 RTMP RTP/RTCP
传输协议 TCP UDP
延迟程度
使用场景 普通直播 RTC/连麦直播

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-20 15:10:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-20 15:10:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-20 15:10:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-20 15:10:03       18 阅读

热门阅读

  1. vue3虚拟dom和diff算法实现(模仿源码)

    2023-12-20 15:10:03       34 阅读
  2. npm run build Last few GCs

    2023-12-20 15:10:03       42 阅读
  3. 华纳云:Ubuntu下LAMP环境如何配置

    2023-12-20 15:10:03       36 阅读
  4. 【刷题·链表】两数相加

    2023-12-20 15:10:03       39 阅读
  5. 在.NET中,如果你需要自动填充测试数据

    2023-12-20 15:10:03       36 阅读
  6. 【手撕算法系列】k-means

    2023-12-20 15:10:03       42 阅读
  7. Gitlab 登录报422错误,账号密码是正确的

    2023-12-20 15:10:03       32 阅读
  8. 207. Course Schedule

    2023-12-20 15:10:03       48 阅读
  9. @Controller 和 @RestController 区别

    2023-12-20 15:10:03       39 阅读
  10. Spring-MVC--ControllerAdvice 全局控制器增强

    2023-12-20 15:10:03       37 阅读