音视频直播核心技术介绍
直播流程

采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 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/连麦直播 |
相关文章:
音视频直播核心技术介绍
直播流程 采集: 是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,比如 iOS、Android、Mac、Windows 等。 前处理:主要就是美颜美型技术,以及还有加水印、模糊、去噪、滤镜等图像处理技术等等。 编码&#…...
JNDI注入Log4jFastJson白盒审计不回显处理
目录 0x00 前言 0x01 Maven 仓库及配置 0x02 JNDI 注入简介 0x03 Java-第三方组件-Log4J&JNDI 0x04 Java-第三方组件-FastJson&反射 0x05 白盒审计 - FastJson 0x06 白盒审计 - Log4j 0x07 不回显的处理方法 0x00 前言 希望和各位大佬一起学习,如果…...
FPGA实现腐蚀和膨胀算法verilog设计及仿真 加报告
要在FPGA上实现腐蚀和膨胀算法,你可以按照以下步骤进行: 图像存储:首先,你需要设计一个图像存储器来存储待处理的图像数据。这可以采用FPGA内部存储器或外部存储器。 读取图像数据:使用适当的接口从图像存储器中读取图像数据,并将其加载到FPGA的计算单元中。 结构元素定义…...
核和值域的关系:什么是矩阵的秩?
核和值域的关系:什么是矩阵的秩? 这篇博客将介绍一个任意矩阵的核和值域的关系,并由此说明矩阵秩的意义、子空间维数、子空间正交。 1、矩阵的核:N(A) A ∈ C m n A\in C^{m\times n} A∈Cmn,矩阵的核,记…...
【MyBatis Plus】Service Mapper内置接口讲解
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《MyBatis-Plus》。🎯🎯 &am…...
制作一个简单 的maven plugin
流程 首先, 你需要创建一个Maven项目,推荐用idea 创建项目 会自动配置插件 pom.xml文件中添加以下配置: <project> <!-- 项目的基本信息 --> <groupId>com.example</groupId> <artifactId>my-maven-plugi…...
基于linux系统的Tomcat+Mysql+Jdk环境搭建(三)centos7 安装Tomcat
Tomcat下载官网: Apache Tomcat - Which Version Do I Want? JDK下载官网: Java Downloads | Oracle 中国 如果不知道Tomcat的哪个版本应该对应哪个版本的JDK可以打开官网,点击Whitch Version 下滑,有低版本的,如…...
Ubuntu环境下SomeIP/CommonAPI环境搭建详细步骤
环境搭建 1.Boost安装 下载Boost源码 : https://www.boost.org/users/download/ 编译安装 首先安装编译所需依赖 sudo apt-get install build-essential g sudo apt-get install installpython-dev autotools-dev sudo apt-get install installlibicu-dev buil…...
maven 项目导入异常问题
问题如下 一、 tomcat正再运行的包是哪一个 不同构建、打包情况下分别运行 out\artifacts下 当直接去Project Structure下去构建artifacts 后,运行tomcat 则会在out下target下 reimport项目后,则会在artifacts自动生成部署包。删除tomcat之前deployment 下的包(同…...
在 VMware 虚拟机上安装黑苹果(Hackintosh):免费 macOS ISO 镜像下载及安装教程
在 VMware 虚拟机上安装黑苹果(Hackintosh):免费 macOS ISO 镜像下载及安装教程 VMware 虚拟机解锁 macOS 安装选项使用 macOS iso 系统镜像安装使用 OpenCore 做引导程序安装 在 VMware 虚拟机上安装黑苹果(Hackintosh):免费 macOS ISO 镜像下载及安装…...
国产ToolLLM的课代表---OpenBMB机构(清华NLP)旗下ToolBench的安装部署与运行(附各种填坑说明)
ToolBench项目可以理解为一个能直接提供训练ToolLLM的平台,该平台同时构建了ToolLLM的一个开源训练指令集。,该项目是OpenBMB机构(面壁智能与清华NLP联合成立)旗下的一款产品,OpenBMB机构名下还同时拥有另外一款明星产…...
串口通信(5)-C#串口通信数据接收不完整解决方案
本文讲解C#串口通信数据接收不完整解决方案。 目录 一、概述 二、Modbus RTU介绍 三、解决思路 四、实例 一、概述 串口处理接收数据是串口程序编写的关键...
大数据分析岗是干什么的?
大数据分析岗主要负责从大规模数据集中提取、整理、分析和解释有关业务、市场或其他相关领域的信息的职位。 主要的职责和工作内容如下: 1. 数据收集和整理 收集各种数据源(包括结构化、非结构化和半结构化数据),并将其整理成可…...
hadoop运行jar遇到的一个报错
报错信息: 2023-12-19 14:28:25,893 INFO mapreduce.Job: Job job_1702967272525_0001 failed with state FAILED due to: Application application_1702967272525_0001 failed 2 times due to AM Container for appattempt_1702967272525_0001_000002 exited with…...
长短期记忆(LSTM)神经网络-多输入分类
目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分程序: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…...
开启创意之旅:免费、开源的噪波贴图(noise texture)生成网站——noisecreater.com详细介绍
在当今数字创意领域,噪波贴图(Noise Texture)是游戏渲染、游戏开发、美术设计以及影视制作等行业不可或缺的艺术素材之一。为了满足广大创作者的需求,noisecreater.com应运而生,成为一款免费、开源的噪波贴图生成工具。…...
Android Studio问题解决:Gradle Download 下载超时 Connect reset
文章目录 一、遇到问题二、解决办法 一、遇到问题 Gradle Download下载超时Sync了很多次,一直失败 二、解决办法 手动通过gradle网站下载 https://gradle.org/releases/可能也会出现超时,最好开个VPN软件会比较快。 下载好的软件,放到本机的…...
【Python百宝箱】云上翱翔:Python编程者的AWS奇妙之旅
雲端箴言:用Python主持AWS管理交響樂 前言 随着云计算的普及,AWS(Amazon Web Services)成为了许多组织和开发者首选的云服务提供商。作为Python工程师,深入了解AWS管理工具和库对于高效利用云资源至关重要。本文将引…...
抖音直播间websocket礼物和弹幕消息推送可能出现重复的情况,解决办法
在抖音直播间里,通过websocket收到的礼物消息数据格式如下: {common: {method: WebcastGiftMessage,msgId: 7283420150152942632,roomId: 7283413007005207308,createTime: 1695803662805,isShowMsg: True,describe: 莎***:送给主播 1个入团卡,priority…...
【设计模式--行为型--访问者模式】
设计模式--行为型--访问者模式 访问者模式定义结构案例优缺点使用场景扩展分派动态分派静态分派双分派 访问者模式 定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 结构 抽象访问者角色&…...
OpenClaw技能扩展实战:基于nanobot开发自定义自动化模块
OpenClaw技能扩展实战:基于nanobot开发自定义自动化模块 1. 为什么需要自定义技能? 去年夏天,我经常需要在出门前手动查询天气情况,这个看似简单的动作却让我感到烦躁——打开浏览器、输入网址、输入城市、查看结果。作为一个技…...
Python 3.15 JIT深度解析(仅限首批内测用户验证的6项隐藏能力)
第一章:Python 3.15 JIT 的演进脉络与内测生态定位Python 3.15 并非官方已发布的正式版本,而是社区中围绕“Python JIT 加速”持续探索所形成的前瞻性技术代号,特指以 CPython 为核心、集成实验性即时编译器(JIT)的内测…...
Qwen3.5-35B-A3B-AWQ-4bit图文对话教程:如何利用上下文长度4096做长图分析
Qwen3.5-35B-A3B-AWQ-4bit图文对话教程:如何利用上下文长度4096做长图分析 1. 引言:当AI学会“看图说话” 想象一下,你拿到一张复杂的流程图、一张信息密集的仪表盘截图,或者一张包含大量文字和图表的长图。你不仅想知道图上有什…...
开源音效引擎:用Equalizer APO打造专业级音频体验
开源音效引擎:用Equalizer APO打造专业级音频体验 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 在数字音频处理领域,音效调节、音频优化一直是专业用户和发烧友追求的核心目标…...
MySQL 8.0 等保合规实战:手把手配置开源审计插件 server_audit.so
MySQL 8.0 等保合规审计插件实战指南 在数字化转型浪潮中,数据库安全审计已成为企业合规运营的刚需。对于使用MySQL 8.0的企业而言,如何在不影响性能的前提下满足等保2.0三级及以上对数据库审计的要求,是每位DBA和安全工程师必须掌握的技能。…...
5个高效步骤掌握MOOTDX数据接口:构建专业金融分析系统指南
5个高效步骤掌握MOOTDX数据接口:构建专业金融分析系统指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX作为一款专为Python开发者设计的通达信数据接口封装库,通过…...
手把手教你解决小程序支付跳转微支保的iOS兼容问题(附完整代码)
手把手教你解决小程序支付跳转微支保的iOS兼容问题(附完整代码) 在微信小程序开发中,支付功能是许多商业应用的核心环节。然而,当支付流程需要先跳转到微支保小程序完成实名认证时,开发者往往会遇到一个棘手的平台兼容…...
自己搭建永磁同步电机参数变动模块:为预测控制助力
永磁同步电机参数不确定/参数变化/参数失配/参数摄动模块 其中直交轴电感,电阻,磁链,转动惯量,粘滞摩擦系数可设置为自己所需的时变工况 适合做预测控制的同志们 由于MATLAB封装模块不可改动,于是自己搭建了这个模块,默认版本为2021b最近在研…...
从DBC到CAPL全流程避坑指南:BusType设置对自动化测试的影响
从DBC到CAPL全流程避坑指南:BusType设置对自动化测试的影响 在汽车电子测试领域,DBC文件如同CAN网络的"基因图谱",而CAPL脚本则是激活这些基因的"酶"。当两者配合出现问题时,往往不是基因突变,而是…...
什么是SSE 流式推送
SSE 流式推送(Server-Sent Events,服务器发送事件),是一种基于 HTTP 协议、服务器主动向客户端单向推送实时数据流的 Web 技术(HTML5 标准)。 一、一句话理解 客户端(浏览器)用 Even…...
