音视频直播核心技术

直播流程


采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 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/连麦直播
相关推荐
智能直播2 天前
RK3528 RGA+DRM框架 HDMI out视频输出:从多图层合成到显示送显
视觉检测·音视频·实时音视频·视频编解码
hz567893 天前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
VidDown3 天前
上传 2GB 文件别让 Django 接:分片上传、对象存储直传与秒传
python·django·音视频·状态模式·实时音视频·视频编解码·视频
智能直播3 天前
RK3528 Tinyalsa/ALSA框架:输入源声音获取与HDMI out声音输出,一文讲透直播音频链路
音视频·实时音视频·视频编解码
Zhang.Yi5 天前
STM32-BKP和RTC
stm32·嵌入式硬件·实时音视频
嵌入式分享6 天前
BSP调试#01:RTC(RK3588)
嵌入式·实时音视频
智联视频超融合平台13 天前
WebRTC + AI:实时音视频中嵌入神经网络推理的架构设计
人工智能·webrtc·实时音视频
LCG元14 天前
STM32F103 I2C 驱动 DS3231 高精度 RTC 实战:BCD 码解码陷阱、闹钟状态机整定与日误差实测
stm32·嵌入式硬件·实时音视频
可乐鸡翅yeah_14 天前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
Multipath71215 天前
Ku保底,Ka提速— 双频卫星聚合,打造应急通信“不断线”保底链路
网络·5g·安全·智能路由器·实时音视频