
WebRTC
qw_stone
文不能测字,武不能防身
展开
-
gn编译二次记录
原因:webrtc m95分支搭建本地镜像,镜像支持四个端编译。关于搭建过程中遇到的问题在此记录一下。原创 2022-01-06 17:46:57 · 212 阅读 · 0 评论 -
Pofile-level-id
说明:sdp中由于264对应的profile不同,则在创建编码器时会导致找不到对应的编码器。base_sdp += "m=video 9 UDP/TLS/RTP/SAVPF 127 125 108 124\n";base_sdp += "a=fmtp:127 " "level-asymmetry-allowed=1;packetization-mode=0;profile-level-id="; "42e01f";42e01f:分为三个部分,42 e0 1..原创 2021-02-05 16:47:11 · 573 阅读 · 0 评论 -
mRemoterNG使用
概述:主要用于远程连接windows服务器使用。下载地址:https://mremoteng.org/download,选择对应版本进行下载安装即可.1:配置远程连接软件安装成功后,点击文件,新建连接,此时弹出一个连接窗口,我们输入对应的主机名/ip,用户名,密码等.双击该连接即可.2:配置文件的导出和导入如果涉及到很多机器的配置,一人配置多人使用,可以将该配置文件进行导出和导入即可。导出:点击文件,另存配置文件为。导入:将该配置文件.xml,点击文件,打开连接配置文件。.原创 2020-08-24 18:48:25 · 2833 阅读 · 0 评论 -
gn编译webrtc介绍
说明:由于需要通过gn编译webrtc源代码和自研代码的添加,在此介绍gn命令和格式。概述:我们通过gclient实现webrtc源码的下载,下载完成后使用gn命令进行编译,此时生成对应平台的文件(.ninja)。gn参考:https://www.chromium.org/developers/gn-build-configurationgn介绍:(generate ninja )顾名思义为生成ninja文件,为一个编译工具,是GYP(Generate Your Project)的替代工具,..原创 2020-08-16 00:37:58 · 2300 阅读 · 0 评论 -
webrtc屏幕共享
概述:通过webrtc/modules/desktop_caputre/模块实现屏幕采集(参照:https://www.jianshu.com/p/484edbd3311f)原理:窗口采集主要使用GDI或者DirectX实现。编译webrtc_modules模块将desktop_capture包含,此时会涉及到winsock2.h和windows.h的冲突问题,只需要添加WIN32_LEAN_AND_MEAN预编译选项即可。实现屏幕共享类,其中VideoCapturer类主要是用于实现数据源。Callb原创 2020-06-29 17:14:40 · 2454 阅读 · 3 评论 -
Inter_arrival模块分析
概述:该模块主要是为了获取发送端时间差值,到达时间差值,包组间包个数差值。通过获取这些参数传递给后续模块进行延迟估计。包组的概念:webrtc中计算延迟不是一个个包计算,而是通过将包进行分组,然后计算包组间的延迟,这样一是可以减少计算量,二也是可以使之更加平滑。具体方法:差值计算是在inter_arrival模块进行获取。timestamp:表示数据包的发送时间。arrival_time_ms:表示数据包到达时间单位ms。timestamp_delta:表示数据包两个组之间发送时间间隔(也就是下图中原创 2020-06-24 16:50:08 · 936 阅读 · 0 评论 -
webrtc中ICE介绍
原因:根据源码进行分析,在此记录一下webrtc中ice连接流程。概述:Agent首先获取需要的地址,然后地址进行交换,随后进行连通性测试,最终选择一个最合理的连接用于数据传输。ICE:interactive connectivity establishment交互式连接建立。是一组基于offer/answer模式解决NAT穿越的协议集合。在此简单介绍一下NAT,NAT(Network Address Translation网络地址转换)。目前NAT类型主要分为完全锥型,地址限制锥型,端口限制锥型,原创 2020-06-03 18:30:46 · 3239 阅读 · 0 评论 -
libmicrohttpd介绍
原因:由于janus服务端http使用的是libmicrohttpd三方库,所以在此进行记录。概述:通过引用.lib,实现http服务端的创建,并通过客户端post发送,实现数据的传输。介绍:libmicrohttpd:是一个c语言库,主要实现http服务器的功能,主要特点有:体积小,api简单,跨平台,且兼容HTTP1.1。下载地址:http://www.gnu.org/s...原创 2020-05-08 17:25:04 · 2825 阅读 · 0 评论 -
DataChannel消息发送
原因:由于需要使用DataChannel进行消息发送,故在此记录一下流程概述:通过创建DataChannel,通过事件监听获取连接状态,从而实现消息发送,底层协议为DCT_RTP或者DCT_SCTP。流程介绍:首先配置启用rtp_data_channel,底层在创建webrtcsession时会默认data_channel底层协议为DCT_RTP。webrtc::PeerConn...原创 2020-04-28 17:08:24 · 1261 阅读 · 0 评论 -
webrtc拥塞机制和带宽调节
参考:https://blog.youkuaiyun.com/yuanrxdu/article/details/80449740webrtc的gcc是通过延迟和丢包进行动态调整的,发送端通过接收到接收端rtcp反馈过来的信息(包延迟增量,丢包率信息等)计算出网络拥塞状态并评估出适合当前网络传输的码率,从而进行码率控制。所以重点是接收端rtcp反馈信息,和发送端是如何根据不同信息进行评估。首先分析一下r...原创 2020-01-03 18:43:55 · 601 阅读 · 1 评论 -
ios平台webrtc记录1
原因:由于需要实现连麦功能,故开始需要从零开始进行框架的搭建。概括:通过配置开源服务端和客户端实现连麦胡同测试。首先下载webrtc镜像:https://webrtc.org.cn/mirror/。该镜像由声网进行维护,避免了google服务器下载失败的问题。根据介绍的流程进行安装即可。本介绍以ios平台安装为例,通过下载后利用gn生成xcode工程文件。命令如下:gn gen ...原创 2019-12-26 13:37:47 · 413 阅读 · 0 评论 -
webrtc_noise_suppression
原因:由于APM中涉及到去噪模块,故在此进行简单调用和原理分析概况:通过对信号的初始噪声估计得出一个语音/噪声概率函数,然后通过该函数估计出每帧数据的噪声,然后使用维纳滤波器将噪声进行抑制。故重点为噪声估计的准确性。而噪声估计依赖于语音/噪声概率函数,而语音/噪声概率函数是通过使用映射函数将每帧的信号分类特征映射到一个概率值而得出。每帧的分类特征包括:频谱平坦度,频谱差异,LRT均值特征。...原创 2019-11-01 15:42:44 · 928 阅读 · 0 评论 -
webrtc_module_audio_conference_mixer
原因:由于需要进行基于webrtc的混音模块封装,故在此进行简单调用。概述:通过将webrtc_module_audio_conference_mixer模块的摘出,编写测试代码实现conference_mixer模块的调用,内部混音流程与之前博客分析一致调用伪代码如下:通过实现AudioMixerOutputRecevicer和MixerParticipant类,实现数据的填充和接收....原创 2019-10-31 16:56:04 · 417 阅读 · 0 评论 -
webrtc_module_audio_mixer
原因:由于需要将webrtc_module_audio_mixer模块进行封装,故在此进行调用分析概况:通过内部代码可以看出webrtc_module_audio_mixer内部实现为首先将pcm进行halfgain处理,然后进行pcm对应累加,通过LimitMixedAudio将mixed的数据进行平滑处理然后进行简单的pcm扩大2倍.重点为Audioprocessing中的processS...原创 2019-10-30 16:18:50 · 656 阅读 · 0 评论 -
回声消除简单分析
原因:由于需要对webRTC源码中audio_processing模块中回声消除验证,故在此进行模块分析。概况:通过将audio_processing模块单独调用,通过wavapi进行播放和采集用于测试回声消除模块。回声消除介绍:实时语音通话中,子所以会产生回声的原因是A通话者的声音被麦克风采集后通过网络发送到远端B,远端B扬声器播放出来的声音又被麦克风进行采集后通过网络发送给A,由...原创 2019-10-29 17:04:28 · 902 阅读 · 2 评论 -
webRTC混音流程
原因:由于目前开始调研混音算法,故在此分析一下webRTC的实现流程,其他实现流程在另外一个博客有记录.概况:目前调研的混音算法在多路混音时只有webRtc的原理符合基本流程。webRtc充分考虑了人耳在同一时间内最多只能感知3路音频的特性,故在多路混音时选择三路能力值最大的作为主要混音,其余参与者判断是否上一帧参与过混音,如果参与过则当前帧进行淡出特性,然后一起进行混音.而最终的混音算法就是...原创 2019-09-12 18:05:14 · 2309 阅读 · 0 评论 -
windows平台libwebsocket源码编译并生成VS2015解决方案
原因:由于windows平台为了和janus服务器进行通信,故需要使用到websocket,借此基于libwebsocket实现client和server.环境:win7 64位.vs2015.cmake,openssl.编译步骤1:编译openssl并生成相应的文件,步骤如下 1.1:下载安装activePerl::https://www.activestate.co...原创 2019-08-09 15:58:19 · 2480 阅读 · 1 评论 -
peerconnect_client与server信令交互
原因:由于今天需要了解一下webRTC源码中examples里面client与server的信令交互.概况:server只是起到一个转发的过程.将连接的client信息以及client发送的candidate数据转发给同房间的其他client.介绍: 首先启动server服务器.可以看出server服务器为一个简单的tcp服务器.通过select进行socket对...原创 2019-08-26 18:30:58 · 796 阅读 · 0 评论 -
peerconnect-client与server信令获取和交互流程
原因:上个文章只是介绍了一下client和server端的简单协议交互,并没有涉及到webRTC的信令交互.即offer,answer,candidate等。概述:webRTC的通信为点对点,则每个点都会创建自己的offer和candidate发送给对端,对端收到后创建自己的answer和candidate进行回复。然后webRTC内部进行candidate连通测试。下面利用代码进行简单描述。...原创 2019-08-28 15:33:23 · 820 阅读 · 0 评论