上篇(webRTC中音频相关的netEQ(四):控制命令决策)讲了MCU模块是怎么根据网络延时.抖动缓冲延时和反馈报告等来决定给DSP模块发什么控制命令的.DSP模块根据收到的命令进行相关处理,处理简要流程图如下. 从上图看出如果有语音包从packet buffer里取出来先要做解码得到PCM数据,没有就不用做解码了.编解码也是数字信号处理算法的一种,是个相当大的topic,不是本文所关注的,本文关注的是对解码后的PCM数据做数字信号处理,如加减速.如果命令是非Normal命令,就要根据命令做D…
上篇(webRTC中音频相关的netEQ(三):存取包和延时计算)讲了语音包的存取以及网络延时和抖动缓冲延时的计算,MCU也收到了DSP模块发来的反馈报告.本文讲MCU模块如何根据网络延时.抖动缓冲延时和反馈报告等决定发给DSP模块的控制命令, 好让DSP模块先对取出的语音包做解码处理(如果有的话)以及根据这些命令做信号处理. MCU模块给DSP模块发的控制命令主要有正常播放(normal).加速播放(accelerate).减速播放(preemptive expand).丢包补偿(PLC,代码…
上篇(webRTC中音频相关的netEQ(二):数据结构)讲了netEQ里主要的数据结构,为理解netEQ的机制打好了基础.本篇主要讲MCU中从网络上收到的RTP包是怎么放进packet buffer和从packet  buffer里取出来,以及网络延时值(optBufLevel)和抖动缓冲延时值(buffLevelFilt)的计算.先看RTP语音包是怎么放进packet  buffer的. 前面说过把从网络收到的RTP包放进packet  buffer时有个slot概念,每个slot里放一个包…
上篇(webRTC中音频相关的netEQ(一):概述)是netEQ的概述,知道了它主要是用于解决网络延时抖动丢包等问题提高语音质量的,也知道了它有两大单元MCU和DSP组成.MCU 主要是把从网络收到的语音RTP包放进packet buffer内,同时也会根据计算出来的网络延时和抖动缓冲延时以及DSP单元反馈过来的信息决定给DSP发什么控制命令(命令主要有正常播放.加速.减速.丢包补偿.融合等),也会把语音包从packet buffer里取出来给DSP单元处理.DSP主要是对取出来的语音包解码并…
上篇文章(语音通信中终端上的时延(latency)及减小方法)说从本篇开始会切入webRTC中的netEQ主题,netEQ是webRTC中音频技术方面的两大核心技术之一(另一核心技术是音频的前后处理,包括AEC.ANS.AGC等,俗称3A算法).webRTC是Google收购GIPS重新包装后开源出来的,目前已是有巨大影响力的实时音视频通信解决方案.国内的互联网公司,要做实时音视频通信产品,绝大多数都是基于webRTC来做的,有的是直接用webRTC的解决方案,有的是用webRTC里的核心技术,…
从本篇起,我们将迈入新的领域:网络传输.首先我们看看 P2P 连接的建立过程,以及 DataChannel 的使用,最终我们会利用 DataChannel 实现一个 P2P 的文字聊天功能. P2P 连接过程 首先总结一下 WebRTC 建立 P2P 连接的过程(就是喜欢手稿): 我们先来一个简单的名词解释. SDP SDP 全称 Session Description Protocol,顾名思义,它是一种描述会话的协议.一次电话会议,一次网络电话,一次视频流传输等等,都是一次会话.那会话需要哪…
四.系统信息相关命令 时间和日期 date cal 磁盘和目录空间 df du 进程信息 ps top kill 1.时间和日期 序号 命令 作用 01 cal 查看日历,-y选项可以查看一年的日历 02 date 查看系统时间 2.磁盘信息 序号 命令 作用 01 df -h disk free 显示磁盘剩余空间 02 du -h [目录名] disk usage 显示目录下的文件大小 -h  以人性化的方式显示文件大小 3.进程信息 序号 命令 作用 01 ps aux process st…
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; m…
对li标签的相关操作——has与find的差异性 demo代码: <ul> <li><p>1</p></li> <li>2</li> <li>3</li> <li>4</li> <li><p>5</p></li> <li>6</li> <li><p>7</p></…
标题栏的渐变效果 使用到的相关装饰器.Class以及相关方法:@Input.@ViewChild.Content.ionViewDidLoad ① @Input 装饰器:用来获取页面元素自定义属性值. <app-header search-show="false" title="发现"></app-header> 在页面 finder.html 页面中,通过调用的控件,并且定义了两个属性 search-show.title: title :…