本文是系列文章中的第1篇,本系列文章的大纲如下:

《移动端实时音视频直播技术详解(一):开篇》
《移动端实时音视频直播技术详解(二):采集》
《移动端实时音视频直播技术详解(三):处理》
《移动端实时音视频直播技术详解(四):编码和封装》
《移动端实时音视频直播技术详解(五):推流和传输》
《移动端实时音视频直播技术详解(六):延迟优化》

直播技术

采集

音频采集

音频的采集过程主要通过设备将环境中的模拟信号采集成 PCM 编码的原始数据,然后编码压缩成 MP3 等格式的数据分发出去。常见的音频压缩格式有:MP3,AAC,OGG,WMA,Opus,FLAC,APE,m4a 和 AMR 等
音频采集和编码主要面临的挑战在于:延时敏感;卡顿敏感;噪声消除(Denoise);回声消除(AEC);静音检测(VAD);各种混音算法等。
在音频采集阶段,参考的主要技术参数有 :
采样率(samplerate):采样就是把模拟信号数字化的过程,采样频率越高,记录这一段音频信号所用的数据量就越大,同时音频质量也就越高;
位宽:每一个采样点都需要用一个数值来表示大小,这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit 等等,位数越多,表示得就越精细,声音质量自然就越好,而数据量也会成倍增大。我们在音频采样过程中常用的位宽是 8bit 或者 16bit;
声道数(channels):
由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。声道数为 1 和 2 分别称为单声道和双声道,是比较常见的声道参数;
音频帧(frame):
音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正玄波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取 2.5ms~60ms 为单位的数据量为一帧音频。这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的;

根据以上定义,我们可以计算一下一帧音频帧的大小。
假设某音频信号是采样率为 8kHz、双通道、位宽为 16bit,20ms 一帧,则一帧音频数据的大小为:
size = 8000 x 2 x 16bit x 0.02s = 5120 bit = 640 byte

图像采集

图像的采集过程主要由摄像头等设备拍摄成 YUV 编码的原始数据,然后经过编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等
图像由于其直观感受最强并且体积也比较大,构成了一个视频内容的主要部分。图像采集和编码面临的主要挑战在于:设备兼容性差、延时敏感、卡顿敏感以及各种对图像的处理操作如美颜和水印等。

在图像采集阶段,参考的主要技术参数有:

图像传输格式:通用影像传输格式(Common Intermediate Format)是视讯会议(video conference)中常使用的影像传输格式;
图像格式:通常采用 YUV 格式存储原始数据信息,其中包含用 8 位表示的黑白图像灰度值,以及可由 RGB 三种色彩组合成的彩色图像;
传输通道:正常情况下视频的拍摄只需 1 路通道,随着 VR 和 AR 技术的日渐成熟,为了拍摄一个完整的 360° 视频,可能需要通过不同角度拍摄,然后经过多通道传输后合成;
分辨率:随着设备屏幕尺寸的日益增多,视频采集过程中原始视频分辨率起着越来越重要的作用,后续处理环节中使用的所有视频分辨率的定义都以原始视频分辨率为基础。视频采集卡能支持的最大点阵反映了其分辨率的性能;
采样频率:采样频率反映了采集卡处理图像的速度和能力。在进行高度图像采集时,需要注意采集卡的采样频率是否满足要求。采样率越高,图像质量越高,同时保存这些图像信息的数据量也越大。

处理


编码和封装



OpenH264 是思科实现的开源 H.264 编码。H.264编码、OpenH264、x264、HEVC/H.265 、libde265、x265、VP8、VP9、libvpx
封装:媒体的容器。封装可以理解为采用哪种货车去运输,也就是媒体的容器。

所谓容器,就是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片你只能从一开始看到最后,不能拖动进度条(当然这种情况下有的播放器会话比较长的时间临时创建索引),而且如果你不自己去手动另外载入音频就没有声音。
1)AVI 格式(后缀为 .avi):
2)DV-AVI 格式(后缀为 .avi):
3)QuickTime File Format 格式(后缀为 .mov):
4)MPEG 格式(文件后缀可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等) :
5)WMV 格式(后缀为.wmv .asf):
6)Real Video 格式(后缀为 .rm .rmvb):
7)Flash Video 格式(后缀为 .flv):
8)Matroska 格式(后缀为 .mkv):
9)MPEG2-TS 格式 (后缀为 .ts)(Transport Stream「传输流」,又称 MTS、TS):

目前,我们在流媒体传输,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分别用于 RTMP/HTTP-FLV 和 HLS 协议。

推流和传输

推流

传输网络

传统的内容分发网络


上图是一个典型的 CDN 系统的三级部署示意图,节点是 CDN 系统中的最基本部署单元,分为三级部署,中心节点、区域节点和边缘节点,最上面一级是中心节点,中间一级是区域节点,边缘节点地理位置分散,为用户提供就近的内容访问服务。

下面介绍一下 CDN 节点的分类,主要分成两大类,骨干节点和 POP 节点,骨干节点又分为中心节点和区域节点。

逻辑上来讲,骨干节点主要负责内容分发和边缘节点未命中时进行回源,POP 节点主要负责提供给用户就近的内容访问服务。但如果 CDN 网络规模较大,边缘节点直接向中心节点回源会给中间层的核心设备造成的压力过大,在物理上引入区域节点,负责一个地理区域的管理,保存部分热点数据。
http://www.52im.net/thread-967-1-1.html(很难需要再看)

延迟优化

编码优化、传输协议优化、传输网络优化、推流、播放优化

【音视频第6天】基础知识-移动端实时音视频直播技术详解和开源工程WebRTC的技术原理和使用浅析相关推荐

  1. Android 基础知识4-3.8 SeekBar(拖动条)详解

    一.简介 拖动条类似进度条,不同的是用户可以控制,比如,应用程序中用户可以对音效进行控制,这就可以使用拖动条来实现.由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现SeekBar.on ...

  2. 【基础知识】深度学习中各种归一化方式详解

    本文转载自 https://blog.csdn.net/qq_23981335/article/details/106572171 仅作记录学习~ 总结 BN,LN,IN,GN,WS 从学术上解释差异 ...

  3. Android 基础知识4-2.11 AbsoluteLayout(绝对布局)详解

    一.引言 Android中的五大布局,在本节中会讲解第六个布局AbsoluteLayout(绝对布局),之所以把这个放到最后,是因为AbsoluteLayout(绝对布局)我们基本上都是不会使用.当然 ...

  4. Android 基础知识4-2.8 TableLayout(表格布局)详解

    一.TableLayout的概述 表格布局是以行数和列数来确定位置进行排列.就像一间教室,确定好行数与列数就能让同学有序入座. 注意:我们需要先添加<TableRow容器,每添加一个就会多一行, ...

  5. 诚之和:Java基础知识枚举Enum类介绍以及案例使用详解

    Java语言中的数据类型可以分为两大类,分别是基本数据类型和引用数据类型.本篇文章要介绍的枚举,就是属于Java的引用数据类型.下面,将为大家详细介绍Java中的枚举,以及具体的使用案例. 一.文章序 ...

  6. 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  7. 移动端实时音视频直播技术详解(一):开篇

    移动端实时音视频直播技术详解(一):开篇 1.引言 随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革.手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域 ...

  8. 移动端实时音视频详解(三):编码和封装

    移动端实时音视频详解(三):编码和封装 视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大 ...

  9. php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识 度量声音强度,大 - phpStudy...

    Android中实时获取音量分贝值详解 基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压 ...

最新文章

  1. python 字符转义_【课堂笔记】Python基础语法:字符串
  2. ***惯用的社会工程学手法
  3. Android Studio笔记
  4. PHP 霸主地位被动摇,JIT 是穷途末路后的绝地反击?
  5. Spring经典高频面试题,原来是长这个样子
  6. 阿里云ecs概念介绍
  7. Mark,road-stone 2012-7-7
  8. Java 1072 开学寄语
  9. Tomcat 在本地创建虚拟目录myapp
  10. Android sqlite数据库的使用(增删改查)
  11. 嵌入式Linux开发-uboot常用命令介绍(上篇)
  12. 在uniapp中使用element-ui组件
  13. 从0到1Python数据科学之旅
  14. 破解微信数据库 并查询数据上传服务器
  15. Java 13个语法糖梳理总结
  16. java8u221_jdk8u221下载|jdk-8u221-windows-x64 官方免费版 下载_当下软件园_软件下载
  17. OS_PV操作_5.行人与机动车过路口问题
  18. unity网络实战开发(丛林战争)-前期知识准备(011-c#连接数据库并实现增删改查以及sql注入问题)
  19. python把excel变成ppt_用Python写excel和ppt文件
  20. java获取dns记录_java之解析DNS的SRV记录

热门文章

  1. 考试2020-11-01
  2. DP1332E是一款SOC的近场通信NFC芯片
  3. 【XRT Vitis-Tutorials】图像并行计算
  4. C#学习记录(32)windows应用程序基础之TextBox控件
  5. 企业应用软件和个人应用软件的区别
  6. 华为HMS的“生态雪球”,滚动在万物智联的新跑道
  7. 转: 如何写好一篇文章
  8. K8S容器项目容器内存配置规则
  9. QT 中遇到QPixmap::scaled: Pixmap is a null pixmap 的解决办法
  10. SIGIR 2022 | FRNet:上下文感知的特征强化模块