皮皮网

【一键复制抖音链接源码】【mapbox源码有多少】【抖音xg源码】simplewebrtc源码

2024-11-23 03:12:53 来源:源码补码反码移位

1.webrtc SDP和candidate消息生成位置学习
2.WebRTC之STUN与TURN以及ICE
3.CentOS7下使用SRS搭建流媒体服务器

simplewebrtc源码

webrtc SDP和candidate消息生成位置学习

       SDP 和 candidate 消息生成代码

       ICE 消息生成及发送,源码由 webrtc 原生 API RTCPeerConnection 中 onicecandidate 事件触发,源码经记录处理后,源码触发 'ice' 事件将 ICE 内容传至 Peer 对象,源码随后 Peer 对象调用信令服务器接口发送 candidate 消息。源码onicecandidate 事件触发自 icecandidate 事件,源码一键复制抖音链接源码icecandidate 事件由 RTCPeerConnection API 中 setLocalDescription 调用内部触发。源码

       代码流程包括:

       信令服务器发出的源码消息处理,Peer.js 中 'ice' 事件触发处理函数 onIceCandidate 的源码消息。

       WebRTC 原生 API RTCPeerConnection 中 onicecandidate 事件传出的源码消息。

       音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

       免费分享音视频学习资料包、源码大厂面试题、源码技术视频和学习路线图,源码资料包括(C/C++,源码Linux,源码FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击 加群免费领取~

       SDP 消息生成

       offer 消息生成,加入房间时,mapbox源码有多少SimpleWebrtc 会调用 webrtc.js 中的 createPeer 函数生成 peer,随后 Peer 对象创建成功后,Simplewebrtc.js 会调用 Peer.start(),主动调用 PeerConnection.prototype.offer,该方法内部调用原生 webrtc RTCPeerConnection API 的 createOffer 方法生成 offer 内容。经过一定处理和记录后,触发 'offer' 事件处理函数,处理函数中 Peer 对象调用信令服务器接口发送 offer 消息。抖音xg源码

       WebRTC 原生 API createOffer 生成的消息。

       Peer offer 事件得到的 offer 消息内容。

       信令服务器发送的 offer 消息内容。

       answer 消息生成,当收到对端 offer 消息后,调用 PeerConnection 的 handleOffer 处理函数,接着主动调用 PeerConnection.answer 方法,该方法调用 _answer 方法,区块链小说源码该方法调用 webrtc 原生 RTCPeerConnection API createAnswer 方法生成 answer。经过 _answer 记录处理后,触发 answer 事件,此事件调用服务发送 answer 消息。

       原文链接:webrtc SDP和candidate消息生成位置学习

WebRTC之STUN与TURN以及ICE

        在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。

        很多时候,我们希望处于不同内部网络中的两台主机能够直接进行通信,即所谓的P2P通信,避免通过其他公共服务器的中转的方式来降低实时通信的延迟。

        由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。

        这种技术通常称为NAT穿透(NAT Traversal),而更多关于NAT的介绍我们在《 WebRTC之NAT穿墙 》已经做了简单的介绍。

        如果对NAT穿透还不了解的话建议先温习一下。

        而今天的主角是STUN、TURN和ICE,它们是实现NAT穿透的不同技术方案。

        STUN,首先在RFC中定义,作为一个完整的NAT穿透解决方案,英文全称是Simple Traversal of UDP Through NATs,即简单的用UDP穿透NAT。

        在新的RFC修订中把STUN协议定位于为穿透NAT提供工具,而不是一个完整的解决方案,英文全称是Session Traversal Utilities for NAT,

        即NAT会话穿透。STUN在RFC与RFC中除了名称变化外,最大的区别是在新的定义中支持TCP穿透。

        STUN是典型的客户端/服务器模式,客户端发起请求,服务端进行响应,默认端口是。

        两种STUN规范:分别是 RFC 和 RFC 。

        RFC通过UDP进行穿墙。目前的服务器对于UDP的限制比较多,导致这种模式穿墙的成功率不高。

        RFC是在RFC的升级版,但是含义确是不一样的,一系列的穿墙攻击,纳入了TCP穿墙。

        所有的STUN消息都包含个字节(每个字节占8位,总共是位)的消息头,其中2个字节(也就是位)的消息类型,

        2个字节的消息长度,这个长度不包含消息头的长度还有个字节的事务ID,请求与响应事务ID相同。

        消息头之后就是是消息体,消息体可以是0或多个属性,每个属性进行TLV编码,包括位的属性类型、位的属性长度和变长属性值。

        更加具体的消息交互协议笔者目前还不打算深入研究,因为目前我的目的是为了学习并使用WebRTC,还没到达弄清楚WebRTC的每一个细节点的高深境界。

        四种主要NAT类型中有三种是可以使用STUN进行穿透:完全圆锥型NAT、受限圆锥型NAT和端口受限圆锥型NAT,对称型NAT则不能使用。

        上面说到对称型NAT无法使用STUN成功进行穿透,这时候就需要TURN出场了。

        TURN协议的目的就是为了解决对称型NAT无法穿越的问题。

        TURN(Traversal Using Relay NAT,通过Relay方式穿越NAT),是一种数据传输协议。允许通过TCP或UDP方式穿透NAT。

        TURN也是一个Client/Server协议,也和STUN使用同样的消息格式。

        但实现TURN client的终端必须在通讯开始前与TURN server进行交互,并要求TURN server产生"relay port",也就是中继转发地址。

        这时TURN server会建立peer,即远端端点(remote endpoints),开始进行中继(relay)的动作,TURN client利用relay port将数据传送至peer,再由peer转传到另一方的TURN client。

        说白了笔者觉得TURN协议更像一个中继转发协议,并不是真正意义上的P2P通信(不知道笔者这样的理解对不对)

        ICE(Interactive Connectivity Establishment,互动式连接建立)。ICE定义了穿越方法而不是协议。

        既然我们NAT穿透可以使用STUN也可以使用TURN,那么什么时候使用STUN什么时候使用TURN呢?这就是ICE做的事情。

        更通俗地讲ICE更像一个NAT穿透的管理者,使用者只需要告诉ICE我要穿墙即可,至于怎么穿墙那就是ICE的事情了。

        ICE整合了STUN与TURN。ICE使得两个NAT后的端点通信更加便捷。ICE使用STUN进行打洞,若失败,则使用TURN进行中转。

        下面说说ICE的主要工作:

        1、收集候选地址也就是收集Candidate

        所谓的Candidate就是一个由IP和端口组成的地址。而Candidate又有三种类型:

        2、对Candidate Pair进行排序

        ICE收集到了候选者地址后,两个对等端都拥有了若干自己和对方的候选地址,并将其配对,组成Candidate Pair。

        每对Candidate Pair都有对应的优先级,ICE需要对每对Candidate Pair进行优先级的排序。

        3、对候选地址进行连通性检测

        ICE对排序好的Candidate Pair进行发送检测和接收检测,发送和检测是同时进行的,如果发送消息出去之后还能收回和发送出去一样的信息则说明连通性是通的

        《P2P技术详解(四):P2P技术之STUN、TURN、ICE详解》

        微信公号:思想觉悟

CentOS7下使用SRS搭建流媒体服务器

       本地服务器配置:使用 CentOS7 Linux 系统(版本:3..0-..1.el7.x_),IP 地址为 ...。将服务器角色定位为使用 SRS(Simple Realtime Server)搭建流媒体服务器。SRS 支持 RTMP、kafka源码开发语言HTTP-FLV、HLS、WebRTC 协议。推流端设备采用 ffmpeg + OBS 软件进行流媒体推送,拉流端则可以使用 VLC 播放器或在网页中嵌入 SRS 自带的播放器。测试场景设计为通过 ffmpeg 测试 RTMP 推流功能,然后分别使用 VLC 和 SRS 播放器进行流媒体拉取。

       所需资料与工具:

       链接:pan.baidu.com/s/1x5DyST...(提取码:epxx)

       参考网站与资源:

       GitHub:ossrs/srs(SRS 源码)

       SRS 官网:ossrs.net/(SRS 官方网站)

       GitHub Wiki:ossrs/srs/wi...(SRS 起步知识与文档)

       SRS:如何用 NGINX 搭建 HLS 分发集群(链接:qq.com)(关于使用 NGINX 与 SRS 集成搭建 HLS 分发集群的教程)

       下载 ffmpeg 官方地址:ffmpeg.org/download.htm...(官方 ffmpeg 下载页面)

       1、准备工作与环境搭建(使用 root 用户执行):

       1.1、安装 CentOS 基础依赖环境

       1.2、关闭与禁用防火墙(避免重启服务器后自动开启)

       1.3、将 ffmpeg、yasm 和 kk.flv 等文件拷贝至 CentOS 主目录下(使用主目录作为存储位置)

       1.4、安装 yasm 编译器

       1.5、安装 ffmpeg

       1.6、修改 /etc/ld.so.conf 文件

       1.7、配置环境变量

       1.8、检查环境变量配置是否生效

       1.9、Windows 下安装 VLC 和 OBS 播放器

       2、SRS 流媒体服务搭建:

       2.1、获取 SRS 源码:

       - 通过官网下载

       - 通过 GitHub 使用**软件下载(推荐)

       - 在国内码云使用 gitee.com/ossrs/srs 下载(推荐)

       2.2、配置与编译 SRS:

       2.3、查看 SRS 配置文件与支持的协议配置(参考 SRS 官方 Wiki)

       2.4、启动与关闭 SRS 服务

       2.5、通过网页控制台查看 SRS 状态

       3、流媒体服务测试:

       3.1、使用 ffmpeg 进行 RTMP 推流测试(注意替换实际值)

       3.2、RTMP、HTTP-FLV、HLS 拉流地址获取与测试(VLC 或网页 SRS 播放器)

       3.3、使用 OBS 播放器进行推流测试(文件推流、摄像头推流与更多推流方式)

       4、扩展与学习资源:

       4.1、Windows 下搭建 nginx-rtmp 流媒体服务器(参考教程)

       4.2、深入学习 SRS 相关知识与技巧(访问 GitHub Wiki 或 SRS 官方网站)