专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

WebRTC成为HTML5标准!是时候学习了!

  大家好,很高兴又见面了,我是高级前端进阶,由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  高级前端进阶
  今天带着大家一起了解下WebRTC,话不多说,直接进入正题。1。什么是WebRTC?
  WebRTC是一组JavaScriptAPI,可以在两个浏览器之间建立点对点连接,实现音频和视频等数据的传输,可以用它创建有语音视频通话功能的应用程序。
  WebRTC的特别之处是,一旦建立了连接,就可以直接在浏览器之间实时传输数据,不需要借助服务器,因此降低了延迟,所以用户都喜欢用webRTC直接传输音视频。
  在WebRTC诞生之前,开发实时音视频应用的成本是非常高,需要考虑的技术问题很多,如音视频的编解码,数据传输延时、丢包、网络抖动、回音处理和消除等,如果要兼容浏览器端的实时音视频通信,还需要额外安装插件。可喜的是,本文的主角WebRTC在2021年1月被W3C和IETF发布为正式标准,而且得到了大多数主流浏览器的支持。
  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(InteractiveConnectivityEstablishment,交互式连接创建)候选人的形式出现。
  SDP会话描述协议(SDP),是一个包含会话连接(如编解码器、地址、媒体类型、音频和视频等)信息的对象。两个对等点会交换SDP来了解如何实现连接。一个是SDPOffer形式,另一个是SDPAnswer形式。
  ICE候选人ICE候选人是公共IP地址和端口,可以做接收数据的地址。通常来说,每个用户会有多个ICE候选人,这些ICE候选人是向STUN服务器发出一系列请求来收集的。
  5。事件发生顺序
  首先,两个对等点会使用某种信令方法来传输SDP。一旦两个SDP传输完成,对等点就连接成功,但这时还不能传输数据。
  要在两个对等点之间交换数据,我们要先传输数据。问题是,现在大多数设备都位于防火墙和NAT设备后面,因此,为了协调公共IP地址的发现,我们使用ICE(InteractiveConnectivityEstablishment,交互式连接创建)方法。
  一旦后台传输了SDP提议,每个对等点就会向STUN服务器发出一系列请求,该服务器会生成一个ICE候选人列表。STUN服务器的成本很低,并且容易维护,有非常多的免费服务,所以大家可以设置一个。
  一旦对等点1从STUN服务器获得这些ICE候选人,就会把这些候选人发送给对等点2,让网络决定要使用的最佳候选人。对等点2会进行同样的操作,请求ICE候选人,然后将其发送给等点1。
  当这些候选人传输成功并发现一条最佳路径时,数据就可以开始在两个对等点之间流动。5。WebRTCAPI调用5。1RTCPeerConnection
  RTCPeerConnection用于点对点之间建立连接以传输音视频数据流,这是RTCPeerConnection的任务,为此需要借助一个信令服务器(signalingserver)来进行,信令包括3种类型的信息:Sessioncontrolmessages:初始化和关闭通信,及报告错误;Networkconfiguration:双方的IP地址和端口号(局域网内部IP地址需转换为外部的IP地址);Mediacapabilities:双方的浏览器支持使用何种编码以及多高的视频分辨率。varPeerConnectionwindow。RTCPeerConnectionwindow。mozRTCPeerConnectionwindow。webkitRTCPeerConnection;navigator。getUserMedianavigator。getUserMedia?getUserMedia:navigator。mozGetUserMedia?mozGetUserMedia:navigator。webkitGetUserMedia?webkitGetUserMedia:getUserMedia;varvdocument。createElement(video);创建信令(createOffer)varpcnewPeerConnection();pc。addStream(video);pc。createOffer(function(desc){pc。setLocalDescription(desc,function(){sendtheoffertoaserverthatcannegotiatewitharemoteclient});})创建回复(createAnswer)varpcnewPeerConnection();pc。setRemoteDescription(newRTCSessionDescription(offer),function(){pc。createAnswer(function(answer){pc。setLocalDescription(answer,function(){sendtheanswertotheremoteconnection});});})5。2RTCDataChannel
  RTCDataChannel接口代表在两者之间建立了一个双向数据通道的连接,可以用
  RTCPeerConnection。createDataChannel()或者在现有的RTCPeerConnection上用RTCDataChannelEvent类型的datachannel事件接收,创建出RTCDataChannel类型的对象。varpcnewRTCPeerConnection();获取RTCPeerConnection对象vardcpc。createDataChannel(mychannel);创建DataChannel对象dc。onmessagefunction(event){console。log(received:event。data);};dc。onopenfunction(){console。log(datachannelopen);};dc。onclosefunction(){console。log(datachannelclose);};5。3访问用户摄像头及麦克风getUserMedia
  WebRTC支持直接传输音频流和视频流(https:appr。tc):constpcnewRTCPeerConnection();获取RTCPeerConnectionnavigator。getUserMedia({video:true},stream{添加视频流到会话中stream。getTracks()。forEach(trackpc。addTrack(track,stream))在网页中预览自己摄像头拍摄到的内容,其中localVideo表示一个Video对象localVideo。srcObjectstream;})
  navigator。getUserMedia()还可以和webAudioAPI相结合,用来处理音频效果:varrangedocument。querySelector(input);window。AudioContextwindow。AudioContextwindow。webkitAudioContext;varaudioCtxnewAudioContext();navigator。getUserMedia({audio:true},function(stream){创建音频流varsourceaudioCtx。createMediaStreamSource(stream);双二阶滤波器varbiquadFilteraudioCtx。createBiquadFilter();biquadFilter。typelowshelf;biquadFilter。frequenc。value1000;biquadFilter。gain。valuerange。value;source。connect(biquadFilter);biquadFilter。connect(audioCtx。destination);},function(error){console。log(error);});
  其实,WebRTC并不只是用来做视频、音频,它还可以用来传输任意数据,包括文件,文本等。上面代码示例可以看到,WebRTC规定了dataChannel这个双工数据通道,而https:snapdrop。net这个网站就是通过WebRTC进行文件分享。constpcnewRTCPeerConnection()constdataChannelpc。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。comagoraiohowdoeswebrtcwork996748603141
  https:www。agora。iocncommunityblog24640
  https:www。yuque。comguiqulaixi2ciw1ltzgfdxqgx3h9zdwxxszd9
  https:developer。mozilla。orgenUSdocsWebAPIRTCDataChannel
  https:caniuse。com?searchWebRTC
  https:www。jianshu。comp1022f559a805
  https:zhuanlan。zhihu。comp421503695
  https:github。comnashaofuwebrtcdemo
  https:blog。csdn。netxyphfarticledetails107297616
  https:flashphoner。comservertoserverwebrtc

七十年代女巨贪包养七名情夫,生活奢淫无度,最终被情夫举报七十年代女巨贪包养七名情夫,生活奢淫无度,最终被情夫举报上世纪70年代的一天,中国人民银行的工作人员接到举报后,到一家小信用社进行突击检查。经过初步筛选,他们发现账本上的3000元人体有哪些器官被摘掉,还不会影响人类生存?进来看看人体是非常奇妙的存在,存在的附属器官组织都经历了上百万年进化,保存下来的最优选择。虽然说人体没有什么非必需器官,但面临疾病意外时,我们不得不抛弃一些器官,保证正常生存。所以说有些器教父1到底好看在什么地方?很少有人能说一部电影定义了一种类型,但这一点在教父中体现得最为真切。自从这部1972年的史诗电影(获得了十项奥斯卡提名,并被评为最佳影片)上映以来,所有的黑帮电影都以这部电影的标准1952年,刘青山涉案170亿被处死刑,13年后儿子考上清华不敢去天津解放之后,1950年的一天,共产党机关食堂里跑来了一个五六岁大的孩子,吵着要找到小灶,和爸爸一起吃饭。在食堂的干部们一眼认出,孩子名叫刘铁骑,是去年9月份被派到天津地委担任书记世上最疼的病是什么病?临床上这2种疼痛,经历过的都是超人前段时间在网上看到一则闹得沸沸扬扬的有趣新闻报道,小李被自己的女朋友逼着去当地的一家月子中心体验分娩的痛苦。相信大家都听说过生孩子的痛只有经历过的女性才有资格谈感受,那都是生不如死严阵以待!解放军东部南部北部三大战区连续进行实弹演习连日来,中国人民解放军三大战区在多个海域接连开展实弹演习,现场炮声隆隆,火力全开,严阵以待。根据中国海事局网站发布的航行警告消息,从7月29日至8月5日,解放军在南海东海渤海等海域河北超200名学生掉入招生陷阱,无一人考上本科,官方已回应导语很多人都认为高考是最重要的考试,但是实际上,中考对于考生来说,也是至关重要的,因为如果在中考当中发挥得不好,可能连上高中的机会都没有,就更不要提考上大学了。但是并不是每一位学生佩洛西之行,暴露美国6个内幕全世界的目光,今天都看向了亚洲。美国政坛三号首长执掌民主党众议院20年的佩洛西,计划窜访中国台湾。局势如箭在弦上,一触即发。对于自1894年工业产值便首次超过英国拿下世界霸权指挥棒席亚洲请佩洛西吃什么席?文观察者网专栏作者席亚洲各位朋友大家好,今天是8月2日星期二,据台湾媒体称,有民进党高官透露,美国国会众议院议长南希佩洛西乘坐的专机将于今夜十点左右降落到台湾,并已经预定台北酒店住七夕翻车?那是因为你没注意到这些七夕将近相信许多朋友已经准备好了送伴侣的礼物但是送礼时一定要注意这三大七夕隐藏雷点以免翻车哦隐藏雷点最近一部热播剧引发了热烈讨论有网友制作了乔振宇饰演的角色李泽林的十大爱情丑德,其抗战老兵郝年生15岁带着国恨家仇上战场父送子,妻送郎,兄弟争相把兵当的英雄壮举,筑成太行山区抗日战争的巍巍长城。抗日战争胜利70周年的今天,一位年近九旬亲历抗战的老兵家居西安的郝年生老人,委托子女向涉县党史研究室发来一
余秀华被家暴要离婚第一次见面就开房,各有所图的婚姻走到头了余秀华是一个极具争议性的人物,有人佩服她的坦诚和勇敢,也有人指责她才不配位,思想龌龊又粗俗。正是因为这些标签,在脑瘫农妇诗人才华等等加持之下,让她名声大噪,成为一名网红。她向来敢说中科在读博士八年未毕业,文化人被举报嫖娼成瘾,校方启动调查随着就业难度的增加,有些学生在毕业前就为自己做好了规划,在大学期间早早地开始准备考研。但有一个现象不知道同学们有没有发现,考取学历是会上瘾的,在考研结束后,不少同学想继续攻读博士。出现这些症状恭喜你怀孕啦有很多孕妈都很好奇怀孕后身体会出现哪些变化,给我们释放哪些信号来告诉我们,我们已经成功受孕了,如果你的身体发生了以下变化,那么恭喜,你很有可能怀孕了。1。月经停止如果连续两个月都没毕业典礼给校长整个活?这次,校长在毕业典礼给我们疯狂整活盛夏又志,栀子花开骊歌声起,毕业如约白日放歌,青春正当时时代潮头,奋斗无穷期青微工作室陈芝欣近日,各高校的毕业典礼上校长们发表了令人印象深刻的毕业致辞或叮嘱或期盼或祝福一起来看看校日媒越南与印度强化防卫合作允许互用对方军事基地据日本经济新闻7月8日报道,越南正在加强与印度的防卫合作。两国6月签署协议,允许互用对方军事基地方便武器在内的军事装备的维保和补给。印度国防部的消息称,越南是首次与其他国家签署此类天天喝白酒,结果将会是什么?事实不会说谎,早知早受益酒,琼浆也酒,玉露也!自古以来,人们对酒的痴迷,非它物可相提并论。在很多文人墨客的诗词中,都有对酒的刻画。而且,历史上也有诸多和酒有关的典故,如杯酒释兵权煮酒论英雄等。不难看出,酒盗宗传人之末路!(下)之前一星期,李小咪去成都看望父母,和在成都的兄弟姐妹一起欢聚。当李小咪告别亲人时,他所乘的电梯竟然一反常态地下了又自动上来,在原楼层停下,如此往复三次之多。当时,送他下楼的亲人在电针对这4种斑的祛斑方法,请对号入座有句话说,一白遮百丑,就是说,只要你的皮肤白皙,五官上的一些小缺陷都无关紧要。相对的,无论五官多好看,皮肤多光滑,但是,只要长斑了,变黑了(肤色不均了),颜值和气质都会大打折扣。几安倍走了,战争是不是不远了?二战后到今天,这么多年的和平,是二战前各种力量交锋后的稳定态。二战前日本右翼非常激进,不符合他们呼唤战争的首相就刺杀掉。日本二战前有刺杀首相的传统我们看看这个刺客的身份刺客身份典型土耳其无人机航母的笑声和泪水奇妙知识季人人能科普,处处有新知头号周刊土耳其已开始测试其最新的AnadoluUDC。他们等着船,由于2019年的火灾,测试被推迟了,但现在一切都结束了,阿纳多卢要去测试了。因此,又一女星被曝去世!曾担任好莱坞大片女主,老戏骨毛永明悲痛悼念饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!7月8日,隐退多年,如今定居美国的老戏骨毛永明,突然在社交账号上发文,悲痛悼念好友的离去,引发网友持续热议。文中,毛永明
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网