![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
rtc-server
rtc服务端信息
浴血筑梦
这个作者很懒,什么都没留下…
展开
-
mediasoup-rtp头及rtp包检查
rtp 包含2个字节的公共,包含版本号2,是否有填充数据P,是否有扩展子段,比如说rid ,mid,csr,mark(流结束) 和负载类型组成。具体子段含义,参照https://blog.csdn.net/Dreamandpassion/article/details/107525385原创 2020-08-21 00:05:03 · 747 阅读 · 0 评论 -
ice-candidate属性
15.1. "candidate" Attribute候选. It contains a transport address for a candidate that can be used for connectivity checks. The syntax of this attribute is defined using Augmented BNF as defined in RFC 5234 [RFC5234]: candidate-attribute = "candidate" ":" f原创 2020-08-10 23:47:04 · 2991 阅读 · 0 评论 -
mediasoup-producer-c++
生产者代表被注入到Mediasoup路由器中的音频或视频源。它是在定义媒体数据包传输方式的传输方式之上创建的。1.创建生产者2.生产者类型3.支持方法支持暂停,恢复,发送rtp数据。原创 2020-08-09 23:40:05 · 472 阅读 · 0 评论 -
janus候选地址生成
nice_agent_get_local_candidates原创 2020-08-06 00:12:53 · 550 阅读 · 0 评论 -
Janus demo-信令交换
Janus源码分析(4)——信令交互过程cgs1999 2019-07-02 11:31:52 2486 收藏 10 分类专栏: WebRTC 版权1. Janus插件交互流程Janus中所有插件都遵循以下基本数据流程:客户端发送create创建一个Janus会话; Janus回复success返回Janus会话句柄; 客户端发送attach命令在Janus会话上attach指定插件; Janus回复success返回插件的句柄; 客户端给指定的插件发送messa转载 2020-08-05 22:02:06 · 1002 阅读 · 0 评论 -
mediasoup 音量监控
1.原理 RTP允许扩展首部,这里表示采用了RFC6464定义的针对audio的扩展首部,用来调节音量,比如在大型会议中,有多个音频流,就可以用这个来调整音频混流的策略 这里没有vad=1,表示不启用这个音量控制a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level。2.方案 在集中式实时传输协议(RTP)[RFC3550]音频会议中,音频混频器或转发器接收来自许多或所有会议参与者的音频流。然后,它有选择地将其中一些转发给会议的其他与...原创 2020-08-04 22:33:09 · 1536 阅读 · 0 评论 -
mediasoup-demo创建房间
1.客户端连接wss。2.服务端收到连接请求后,执行connectionrequest。调用getOrCreateRoom。3.getOrCreateRoom 调用mediasoup api Room.create 创建房间。4.创建房间原创 2020-08-04 21:08:35 · 737 阅读 · 0 评论 -
mediasoup创建work
internal 为work id原创 2020-08-04 19:07:59 · 224 阅读 · 0 评论 -
mediasoup ts-work通信协议-通知
DirectTransport::HandleNotification 处理了具体的消息。目前未看到work发送消息原创 2020-08-04 17:09:26 · 211 阅读 · 0 评论 -
TS spawn创建子进程
child_process.spawn(command[, args][, options])#Historycommand <string> The command to run. args <string[]> List of string arguments. options <Object> cwd <string> Current working directory of the child process. env <原创 2020-08-04 02:01:57 · 1006 阅读 · 0 评论 -
mediasoup-work和js通信模块channel
//fd0(stdin):Justignoreit.//fd1(stdout):Pipeitfor3rdlibrariesthatlogtheirownstuff.//fd2(stderr):Sameasstdout.//fd3(channel):ProducerChannelfd....原创 2020-08-03 23:54:08 · 503 阅读 · 0 评论 -
mediasoup ts-work通信协议
1.js数据格式 js 控制端和worker进程通过管道Duplex进行通信(应该是管道),通信内容为json格式,最大长度4194313。具体如下定义: constrequest={id,method,internal,data}; id 为int 32位,每请求一次,就递增一次,最大值为4294967295; method 为请求的字符串方法,具体方法参照下表格; internal和data 为json格式,可以为空,具体内容依据请求的不同而定。...原创 2020-08-03 23:50:42 · 344 阅读 · 0 评论 -
mediasoup 管道通信类UnixStreamSocket分析
1.头文件声明class UnixStreamSocket{public: /* Struct for the data field of uv_req_t when writing data. */ struct UvWriteData { explicit UvWriteData(size_t storeSize) { this->store = new uint8_t[storeSize]; } // Disable copy constructor b.原创 2020-08-03 23:49:26 · 343 阅读 · 0 评论 -
mediasoup架构分析
1. 设计架构图 Worker 一个Worker代表着一个运行在单核CPU上并处理Router实例的mediasoup C++子进程; RouterRouter用于注入、选择和转发通过Transport实例创建的媒体流; TransportTransport将终端与MediaSoup Router连接起来,并通过在其上创建的Producer和Consumer实例实现双向媒体传输,实现了下面3种Transport: WebRtcTransport 一个WebRtc转载 2020-08-03 10:25:52 · 1733 阅读 · 0 评论 -
CSDN网关
本文实现一个简易的单向webrtc网关,使用chrome浏览器浏览服务器上的h264视频文件。代码地址 https://github.com/wangdxh/Desert-Eagle/tree/master/webrtcgateway网关服务器使用c++开发,通过webrtc底层协议和chrome浏览器进行交互。webrtc交互需要一些udp网络和ice协议基础,参考资料:web性能权威指南 第3章UDP的构成和第18章webrtcice协议rfc5245大致交互流程webrtc使用sdp除了转载 2020-07-28 21:07:41 · 595 阅读 · 2 评论 -
RTP协议详解
1.什么是RTP 数据传输协议RTP,用于实时传输数据。RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提..原创 2020-07-23 00:07:00 · 17945 阅读 · 0 评论 -
WEBRTC学习历程
1.NAT基本概念和分类NAT https://mp.csdn.net/console/editor/html/107291802原创 2020-07-15 20:20:00 · 259 阅读 · 0 评论 -
STUN/TURN协议
STUN和TURN协议解析 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要其他公共服务器的中转。由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NAT Traversal)。最常见的NAT穿透是基于UDP的技术,如RFC3489中定义的STUN协议。原创 2020-07-15 20:05:46 · 1284 阅读 · 0 评论 -
P2P链接建立
NATNAT有4种不同的类型1) Full Cone这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.不管是不是C发过来的.例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88A(192.168.8.100:5000) -> NAT(202.100.100.100:8000) -> C(292.88.88.88:2000)任何发送到 NAT(202.1转载 2020-06-28 19:12:12 · 1177 阅读 · 0 评论 -
rtc服务器通信模型
WEBRTC三种类型(Mesh、MCU 和 SFU)的多方通信架构 WebRTC 本身提供的是 1 对 1 的通信模型,在 STUN/TURN 的辅助下,如果能实现 NAT 穿越,那么两个浏览器是可以直接进行媒体数据交换的;如果不能实现 NAT 穿越,那么只能通过 TURN 服务器进行数据转发的方式实现通信。目前来看,Google 开源的用于学习和研究的项目基本都是基于 STUN/TURN 的 1 对 1 通信。如果你想要通过 WebRTC 实现多对多通信,该如何做呢?其实,基于 W...转载 2020-06-28 18:16:00 · 1039 阅读 · 0 评论 -
win10+vs2019编译 webrtc
Windows平台WebRTC编译-VS20172019年03月14日 1415点热度 5人点赞 80条评论在音视频领域,想深入研究的话,必定会接触WebRTC。WebRTC是一个庞大的工程,就像是音视频领域的百科全书,音视频采集,编解码,传输,渲染等一条龙在WebRTC里都有,而且WebRTC还有很多先进的音视频处理算法。由于WebRTC代码过于庞大,所以最好单步调试跟踪代码运行,这样才可以更好地学习WebRTC,否则很难有头绪。工欲善其事必先利其器,作为调试神器,宇宙第一IDE Visual S原创 2020-08-02 19:45:05 · 4258 阅读 · 0 评论 -
wbrtc ICE连接-候选地址和选择
完整SIP/SDP媒体协商概论-ICE初始offer发送详解2020-05-25 14:16:56作者:james.zhu 来源:Asterisk开源派评论:0 点击:5973 在前面的章节中,我们主要讨论了ICE概览,介绍了ICE的基本处理流程和候选地址配对的算法概论和轻量级ICE部署(Lite Implementations)的讨论。和前面介绍中讨论的SIP中offer的处理一样,在此文章中,笔者也将首先介绍ICE处理过程中初始offer的发送处理。因为轻量级的IC...转载 2020-07-14 10:29:57 · 1239 阅读 · 0 评论 -
1对1实时视频/语音通讯原理概述
webrtc笔记(2): 1对1实时视频/语音通讯原理概述开始正文之前,先思考1个问题:2个处于不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点的实时视频/语音通讯,难点在哪?至少得先搞定下面2个问题:1、彼此要了解对方支持的媒体格式、支持的最大分辨率等媒体信息比如:peerA端可支持MPEG-1/2、H264多种编码格式,而peerB端支持MPEG-4、H264,要保证二端都正确的编解码,最简单的办法就是取它们的交集H264就象2个不同国家的人交流,1个只会讲英转载 2020-07-11 20:24:17 · 2707 阅读 · 0 评论