音视频直播核心技术

直播流程


采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 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/连麦直播
相关推荐
IT北辰1 天前
Linux下 date时间应该与系统的 RTC(硬件时钟)同步
linux·运维·实时音视频
音视频牛哥2 天前
RTMP|RTSP播放器只解码视频关键帧功能探讨
音视频·实时音视频·大牛直播sdk·rtsp播放器·rtmp播放器·rtsp player·rtmp player
wdfk_prog8 天前
rtthread学习笔记系列-- 31 RTC
笔记·学习·实时音视频
网易智企10 天前
游戏语音的历史是什么样的?
大数据·人工智能·游戏·ai·音视频·语音识别·实时音视频
前端开发菜鸟的自我修养11 天前
uniApp通过xgplayer(西瓜播放器)接入视频实时监控
前端·javascript·vue.js·uniapp·实时音视频·监控·视频
小猪写代码13 天前
STM32 拓展 RTC案例1:使用闹钟唤醒待机模式 (HAL库)
stm32·嵌入式硬件·实时音视频
qq_4597300314 天前
STM32-RTC实时时钟
stm32·单片机·实时音视频
智联视频超融合平台16 天前
WebRTC 在视频联网平台中的应用:开启实时通信新篇章
网络协议·音视频·webrtc·实时音视频·视频编解码
DogDaoDao17 天前
VVenC 编码器源码结构与接口函数介绍
音视频·实时音视频·视频编解码·h266·vvc·vtm·vvenc
网易智企17 天前
游戏社交趋势下,游戏语音再升级!
人工智能·游戏·音视频·语音识别·实时音视频·信息与通信·通信