范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

WebRTC已成为HTML5标准?是时候开始学习了?

  1.什么是 WebRTC?
  WebRTC 是一组 JavaScript API,可以在两个浏览器之间建立点对点连接, 实现音频和视频等数据的传输,可以用它创建有语音/视频通话功能的应用程序。
  WebRTC 的特别之处是,一旦建立了连接,就可以直接在浏览器之间实时传输数据,不需要借助服务器,因此降低了延迟,所以用户都喜欢用 webRTC 直接传输音视频。
  在WebRTC诞生之前,开发实时音视频应用的成本是非常高,需要考虑的技术问题很多,如音视频的编解码,数据传输延时、丢包、网络抖动、回音处理和消除等,如果要兼容浏览器端的实时音视频通信,还需要额外安装插件。可喜的是,本文的主角WebRTC在2021年1月被W3C和IETF发布为正式标准,而且得到了大多数主流浏览器的支持。
  CanIUse中WebRTC的浏览器支持情况2.WebRTC 与 WebSockets的区别
  在讨论 WebRTC 的工作原理之前,先看看 WebRTC 和 WebSockets 的对比,因为很多人都会觉得"听着跟 WebSockets 一样,用 WebSockets 就好了,为什么需要 WebRTC "?
  使用 websockets 也可以建立点对点连接,实时传输数据,但这种连接是在客户端和服务器之间。因此,如果我向某一对等点发送消息,这个消息会先传送到服务器,然后服务器再把这个消息发送给另一个对等点。通常来说,这种传输非常快,如果大家发送的是聊天信息或某些通知,即使有一些延迟也注意不到。
  但如果我们用 websockets 传输音视频情况就不一样了。用 websockets 传输音视频时,即使有非常轻微的延迟也会非常明显,还会导致很多其他问题。当视频数据到达服务器并返回对等点时,用户会感觉到明显的延迟。
  而这就是 webRTC 的优势所在,在两个浏览器之间建立连接并直接交换数据,消除了服务器可能导致的延迟,WebRTC 还使用了用户数据报协议(UDP),这些都有利于数据的快速传输。
  通常WebRTC会与WebSocket配合使用,WebSocket的作用主要是用来交换客户端的SDP与网络信息,Websocket传输的内容与真正通信数据无关,只是协助WebRTC建立连接。3.用 webRTC 传输数据这么快,为什么还需要 websockets?
  webRTC 有一定的局限性,所以通常会同时使用 webRTC 和 websockets。
  首先,webRTC 使用 UDP,但是用 UDP 传输重要数据会有点不太可靠。UDP 的优势在于传输数据非常快,劣势在于它不检查数据是否被成功接收。所以,可以用 UDP 来传输视频,就算传输过程中丢失了几帧,也没啥大问题;但如果是发送文件,丢失几个字节的数据就会导致整个文件的损坏。
  另外,WebRTC 没有内置信令,所以只用 WebRTC 没法建立点对点的连接,但一旦建立了连接,WebRTC 就可以处理所有问题,至于如何传输初始数据来连接两个对等点则由我们决定。
  4.两个客户端之间传送什么,如何发送?
  首先,信息的发送通常是通过一个叫做信令的过程。由于两个对等点不了解对方的情况,我们通常会使用 WebSockets 或其他第三方信令服务将两个对等点引入同一个频道。
  当把两个对等点引入同一个频道或房间时,他们就可以通过连接细节发出信号。这些连接细节以会话描述协议(SDP)和 ICE (Interactive Connectivity Establishment,交互式连接创建)候选人的形式出现。
  SDP ——会话描述协议(SDP),是一个包含会话连接(如编解码器、地址、媒体类型、音频和视频等)信息的对象。两个对等点会交换 SDP 来了解如何实现连接。一个是 SDP Offer 形式,另一个是 SDP Answer 形式。
  ICE 候选人——ICE 候选人是公共 IP 地址和端口,可以做接收数据的地址。通常来说,每个用户会有多个 ICE 候选人,这些 ICE 候选人是向 STUN 服务器发出一系列请求来收集的。
  5.事件发生顺序
  首先,两个对等点会使用某种信令方法来传输 SDP。一旦两个 SDP 传输完成,对等点就连接成功,但这时还不能传输数据。
  要在两个对等点之间交换数据,我们要先传输数据。问题是,现在大多数设备都位于防火墙和 NAT 设备后面,因此,为了协调公共 IP 地址的发现,我们使用 ICE (Interactive Connectivity Establishment,交互式连接创建)方法。
  一旦后台传输了 SDP 提议,每个对等点就会向 STUN 服务器发出一系列请求,该服务器会生成一个 ICE 候选人列表。STUN 服务器的成本很低,并且容易维护,有非常多的免费服务,所以大家可以设置一个。
  一旦对等点 1 从 STUN 服务器获得这些 ICE 候选人,就会把这些候选人发送给对等点 2,让网络决定要使用的最佳候选人。对等点 2 会进行同样的操作,请求 ICE 候选人,然后将其发送给等点 1。
  当这些候选人传输成功并发现一条最佳路径时,数据就可以开始在两个对等点之间流动。5.WebRTC API调用5.1 RTCPeerConnection
  RTCPeerConnection用于点对点之间建立连接以传输音视频数据流,这是RTCPeerConnection的任务,为此需要借助一个信令服务器(signaling server)来进行,信令包括3种类型的信息:Session control messages: 初始化和关闭通信,及报告错误;Network configuration: 双方的IP地址和端口号(局域网内部IP地址需转换为外部的IP地址);Media capabilities: 双方的浏览器支持使用何种编码以及多高的视频分辨率。var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; navigator.getUserMedia = navigator.getUserMedia ? "getUserMedia" :     navigator.mozGetUserMedia ? "mozGetUserMedia" :     navigator.webkitGetUserMedia ? "webkitGetUserMedia" : "getUserMedia"; var v = document.createElement("video"); // 创建信令(createOffer) var pc = new PeerConnection(); pc.addStream(video); pc.createOffer(function(desc) {     pc.setLocalDescription(desc, function() {         // send the offer to a server that can negotiate with a remote client     }); }) // 创建回复(createAnswer) var pc = new PeerConnection(); pc.setRemoteDescription(new RTCSessionDescription(offer), function() {     pc.createAnswer(function(answer) {         pc.setLocalDescription(answer, function() {             // send the answer to the remote connection         });     }); })5.2 RTCDataChannel
  RTCDataChannel 接口代表在两者之间建立了一个双向数据通道的连接,可以用 RTCPeerConnection.createDataChannel() 或者在现有的 RTCPeerConnection 上用 RTCDataChannelEvent 类型的 datachannel 事件接收,创建出 RTCDataChannel 类型的对象。 var pc = new RTCPeerConnection(); // 获取RTCPeerConnection对象 var dc = pc.createDataChannel("my channel"); // 创建DataChannel对象 dc.onmessage = function (event) {   console.log("received: " + event.data); }; dc.onopen = function () {   console.log("datachannel open"); }; dc.onclose = function () {   console.log("datachannel close"); };5.3 访问用户摄像头及麦克风getUserMedia
  WebRTC支持直接传输音频流和视频流(https://appr.tc/): const pc = new RTCPeerConnection() ; // 获取RTCPeerConnection navigator.getUserMedia({ video: true }, stream => {    // 添加视频流到会话中   stream.getTracks().forEach(track => pc.addTrack(track, stream))    // 在网页中预览自己摄像头拍摄到的内容,其中$localVideo表示一个Video对象   $localVideo.srcObject = stream;  })
  navigator.getUserMedia()还可以和web Audio API相结合,用来处理音频效果: var range = document.querySelector("input"); window.AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); navigator.getUserMedia({     audio: true }, function(stream) {     // 创建音频流     var source = audioCtx.createMediaStreamSource(stream);     // 双二阶滤波器     var biquadFilter = audioCtx.createBiquadFilter();     biquadFilter.type = "lowshelf";     biquadFilter.frequenc.value = 1000;     biquadFilter.gain.value = range.value;     source.connect(biquadFilter);     biquadFilter.connect(audioCtx.destination); }, function(error) {     console.log(error); });
  其实,WebRTC并不只是用来做视频、音频,它还可以用来传输任意数据,包括文件,文本等。上面代码示例可以看到,WebRTC规定了 dataChannel 这个双工数据通道,而https://snapdrop.net/这个网站就是通过WebRTC进行文件分享。 const pc = new RTCPeerConnection()  const dataChannel = pc.createDataChannel("chat")  // 监听datachannel事件 pc.addEventListener("datachannel", event => {    // 接收通信方发送过来的数据   event.channel.addEventListener("message", event => {      console.log("message", event.message)    })  })  dataChannel.addEventListener("open", () => {    // 发送数据,可发送任意数据    dataChannel.send("Hi!")  })  dataChannel.addEventListener("close", event => {  })
  参考资料
  https://medium.com/agora-io/how-does-webrtc-work-996748603141
  https://www.agora.io/cn/community/blog/24640
  https://www.yuque.com/guiqulaixi-2ciw1/ltzgfd/xqgx3h9zdwxxszd9
  https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel
  https://caniuse.com/?search=WebRTC
  https://www.jianshu.com/p/1022f559a805
  https://zhuanlan.zhihu.com/p/421503695
  https://github.com/nashaofu/webrtc-demo
  https://blog.csdn.net/xyphf/article/details/107297616

云南古六大茶山倚邦革登莽枝蛮砖攸乐易武(收藏)云南拥有全国最为丰富的古树茶资源,云南古茶树不仅树龄大,而且古茶园面积大分布区域广,古六大茶山就是其中的典型代表。古六大茶山叶种分中叶种小叶种,大叶种。但云南茶山分为古六大茶山和新这一套很优秀6岁)微风请点击左上角头像关注我,璐璐妈妈天天有分享哦大家好,我是璐璐妈妈,我是一个80后的宝妈,萌娃目前六岁,即将面临幼升小,坚持每天给大家分享精选的幼小衔接和小学学习资源,和宝爸宝妈一个方子,改善心肾不交型失眠大家好,我是曹医生。最近科室接到了一位失眠女性患者,快50岁了,大热天的从湖南赶过来,专门治失眠这个病症。我一看她的脸色没有光泽,精神头也不好,我就知道她的失眠不是几天的事了。我先儿童急性肝炎之谜!苏格兰率先拉响警报,多少国家发病率高于基线?约占体重140150的肝脏,位于我们身体的右季肋部和上腹部,在儿童中这一重量占比将更大。作为人体最大的消化腺,也是体内新陈代谢的中心站,肝脏承担着诸多功能糖的分解贮存糖原参与蛋白质孩子白白胖胖就是好?这其实是误区,儿童肥胖的危害对很多人来讲,当你看到一个孩子白白胖胖的,你的第一印象就是这孩子好可爱啊!平时吃得一定很营养才能养出这么白白胖胖的孩子,大多数父母也是认为把孩子养得白白胖胖的才是对孩子好。殊不知已曼联仍然坚持克里斯蒂亚诺罗纳尔多不会在今年夏天离开据了解,尽管球员希望离开,但曼联坚称他们将努力让克里斯蒂亚诺罗纳尔多在剩余的合同中留在俱乐部。罗纳尔多最近向曼联明确表示,如果有合适的报价,他希望在回归老特拉福德一年后有机会离开老战地2042第一赛季首个更新今日正式上线今日(7月6日),EA官方宣布战地20421。1。0更新将于今日上线,这是第1赛季的首次更新。新增内容这次更新包含了多个全新的漏洞修复游戏质量改进和平衡性调整。下面着重介绍几个重要如何评价PDD因直播唱歌被起诉要求赔偿10万元?近日,知名游戏主播PDD因在直播中演唱向天再借五百年,遭版权方起诉索赔10万元冲上了热搜。PDD表示,自己并未想通过唱歌积攒财富,愿意道歉并不会再唱。向天再借五百年著作权人著名作曲赵薇顶风作案野心炸裂,罪行不仅仅亲日辱华,如今下场大快人心赵薇顶风作案野心炸裂,罪行不仅仅亲日辱华,如今下场大快人心赵薇怎么了?毫无疑问,这是网络上最热门的话题,一夜之间,赵薇被网络封杀,所有的电影都被封了,所有的电影都被删除了,就连还珠急着给吴亦凡判死刑,是时代的悲哀即使6月份,唐山案占据了整个社交媒体几乎全部版面,但关注新闻的人们应该不难想起,吴亦凡案件也在那几天一审开庭。虽然各大新媒体努力的蹭这起案子的热点,营造出案件被公开披露的假象,但认12年后再看旭日阳刚,一个假落魄一个真风光,禁唱春天里绝非主因昨天,作曲家回应PDD唱歌被索赔冲上了热搜。主播PDD因为在直播时唱了几句向天再借五百年,被起诉索赔十万元。这引发了大众的激烈讨论。有人觉得作曲家太贪心,有人觉得版权意识很重要。纷
网贷逾期一年多,却没人来催收,也未被起诉?不是好事,要留意了在近十年里,国内贷款消费市场是越来越兴旺了,越来越多的年轻人钱不够花,需要借钱消费。于是,银行信用卡和网贷平台的贷款业务都在迅速崛起。不过,国内欠债不还的情况也越来越多了,截止到2催收业转型静悄悄回款率高达20,从业者打破头涌入头部催收机构正在秘密寻求一场转型。每个地区只有一到两家调解中心,看谁能捷足先登。不少从业者表示。眼下,他们正在与法院仲裁委司法局等积极沟通,纷纷申请成立金融纠纷调解中心。然而,金融迪丽热巴任嘉伦与君初相识做到了又快又爽却仍觉寡淡这两周基本没怎么更新,因为我对这个个人账号的坚持就是有想说的话才写,没有真心想讨论的片子宁可闭麦,绝不制造流量垃圾占用各位读者亲友的时间。一直放羊到昨天,之前在社交媒体平台曾引发热嘎子谢孟伟卖表被助理挖坑,屡屡碰瓷张一山,惨遭小网红讽刺网友我把你当嘎子哥,你把我当韭菜割嘎子谢孟伟在直播界疯狂试探,看来这是要和潘子齐头并进呀!先前听了潘子的敦敦教诲,他还痛哭流涕决定洗心革面,怎料后来直接下海,哪怕再把握不住,也要亲半夜自然醒,是这几个器官在向你发出警告了为什么半夜三更总会自然醒?有些人经常入睡困难,并且在凌晨三四点时自然醒来,再睡着就变得很困难,然后在床上翻来覆去到天亮,早上起床顶着黑眼圈,气色也很差。大部分人口中所说的半夜自然醒总是耳鸣,这三点需要引起重视总是耳鸣三点原因要重视,对照调理可以改善。如果你的耳鸣久治不愈,今天这个很适合你,尤其是最后一种方法,适用于大多数的耳鸣患者。第一种,肾阳虚型,素体阳虚过伏寒凉,或者是脾虚及肾而致有轻度抑郁症的人,这5句口头禅会常挂嘴边,希望你没说过抑郁症是非常严重的精神障碍性疾病,也是目前患病率和复发率非常高的精神疾病,由于国民对该病认识不足,未能在第一时间内接受正规治疗,导致抑郁症知晓率低,加重病情的发展。夏方养生指南抑郁艾叶的亲戚特别多,这3种植物的嫩叶非常相似,大家千万别采错了导语艾叶的亲戚特别多,这3种植物的嫩叶非常相似,大家千万别采错了春天是吃野菜的季节,在众多野菜当中,艾叶可列为上品之属,自古以来就是一种养生佳品,在民间也是最受欢迎的,其喜爱程度大一旦癌症出现骨转移,身体会有哪些异常呢?现在就告诉你答案癌症是一种起源于上皮组织的恶性肿瘤性疾病,随着国民饮食观念和生活习惯的转变,越来越多的人身患癌症,癌细胞与普通细胞最大的不同之处是,癌细胞能够迅速蔓延,具有扩散繁殖增生的特点,会逐再不穿奶奶衫长半裙就真来不及了,优雅又时尚,照着搭稳赢与漫长的冬季不同,春季太过短暂,很多人尚未将风衣大衣收起来,不知不觉中就到了穿衬衫的时候。所以爱美的你一定要抓紧时间,在春季里尝试温柔又时尚的搭配方式。比如用奶奶衫长半裙,展现你自想要好皮肤?首先你要先选对洗面奶洗面奶不仅能把脸洗干净好的洗面奶对皮肤也是有保护作用的像有一些清洁力太强的洗面奶虽然能把脸洗干净但是是会损伤皮肤角质层的!所以在选择洗面奶的适合选择清洁力和温和度都较好的洗面奶比如