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

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

  1。什么是WebRTC?
  WebRTC是一组JavaScriptAPI,可以在两个浏览器之间建立点对点连接,实现音频和视频等数据的传输,可以用它创建有语音视频通话功能的应用程序。
  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(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

穆氏大巴撞翻尤文老妇人,迪巴拉反戈一击赢旧主,精彩大戏别错过今晚意甲的精彩大战,无疑是红狼罗马客场挑战斑马军团。上赛季惨遭老妇人尤文图斯双杀,主场34,客场01,穆里尼奥还会第三次输给阿莱格里吗?一般不会。穆里尼奥非常谨慎,他不想赢的比赛,战绩彪炳,但差距依然不少,并未全面超越,八冠王柯洁仍需努力当今中国围棋第一人世界大赛八冠王柯洁,在世界棋坛留下一系列彪炳的纪录,譬如世界大赛最年轻三冠王四冠王五冠王六冠王七冠王。在国内他是最年轻八冠王,同一世界大赛(三星杯)夺冠次数最多者标王诞生?切尔西天价引援,8250万签潜力中卫,曼联纪录或被破北京时间8月27日凌晨,根据名记罗马诺透露,切尔西已经就福法纳的转会事宜和莱斯特城达成了协议,福法纳即将成为切尔西夏窗的第7签。罗马诺还补充道,福法纳本人的态度是这次转会的关键所在羽球世锦赛中国队三项晋级决赛陈雨菲冲首冠凡尘雅思皆争创历史直播吧8月27日讯2022年羽毛球世界锦标赛在日本东京进入第6个比赛日。出战的四位对中国选手(组合)喜忧参半,赵俊鹏的神奇之旅被16号种子昆拉武特终结陈雨菲三连胜戴资颖,时隔8年再尴尬,超模吉吉哈迪德惊艳时装周,身边姐妹都是小李子的女友辣眼睛,吉吉哈迪德一众超模惊艳时装周,台上台下都是小李子的女友47岁的好莱坞巨星莱昂纳多迪卡普里奥,30年的约会生涯,换了超过30位超模女友,年龄都控制在25岁以下。小李子带着屠龙想念的人,要常联系趁情还未冷,好好珍惜人这一生,知交零落,实是人生常态。校园里曾经形影不离的同窗好友,结伴一程志同道合的挚友,有时不联系就成了泛泛之交,甚至形同陌路。有时纵然偶有联系,也因工作生活失刘慧留在心底的声音留在心底的声音城区五初中92班刘慧新春归临,人心欢愉,一茬茬削尖响亮的声音破入夜空,隔开凌晨与深夜。在激动的倒计时中,在噼呖的爆炸声中绽放出艳丽的花火,绽放出新年的希望。烟火声,便人是叫不醒的,只能痛醒人教人,教不会事教人,一次就够了。作者洞见yebo俄国小说家克雷洛夫讲过一个故事。有只狐狸,平时走路喜欢把尾巴卷起来。别的狐狸看到了,都劝它放下尾巴,这样在走路时就能扫去自己的脚印半生已过,谁是你可以灵魂相依的人?徐志摩曾说我将于茫茫人海中,寻访我唯一灵魂之伴侣。得之,我幸不得,我命。每个人都渴望此生得遇一个灵魂伴侣,让我们在这个孤独的世间,心有所依,身有所栖。然而灵魂伴侣,是可遇而不可求的夜读丨半梦半醒一壶茶,一生一世一双人。文字丨春暖花开主播丨竹林听雨天边星宿人间客,一样明朝有别离。秋来夏去,斗转星移,转眼,又是一年七夕佳节。情之一字,亘古流传,上至牛郎织女鹊桥重聚,互诉衷肠。下至凡尘男女相约树下,262!中俄反对无效,国际原子能机构通过涉乌决议,要求俄方撤军据报道,9月15日,国际原子能机构理事会通过了一项涉乌决议,要求俄方停止占领并撤出扎波罗热核电站等等。据悉国际原子能机构(IAEA)理事会是由35个理事国组成,此次是以26票赞成2
景中看剧剧中赏景,扬州小剧场好戏连台春节假期在扬州,可以有哪些打开方式?除了游园赏景品味美食沉浸式看展,看一场非遗展演,也好不惬意。扬州中国大运河博物馆,冬荣园小剧场仁丰里小剧场等古城小剧场内好戏连连,让市民和游客感有些中国人又要开启日本爆买,有的店一天就卖出2500万日元日媒爆买终于要回来了。中国时隔3年解除了锁国,世界上开始了对中国游客的争夺战。海外旅行预约件数同比增长6。4倍在从持续了近3年的动态清零政策进行了大转变后,似乎人们对海外旅行的关心过年科技范儿中国年国潮年味新风尚央视网消息春节期间,陕西将传统非遗文化与现代科技艺术手段创新结合,推出了丰富多彩的节庆活动和文艺演出。营造了欢乐吉祥喜气洋洋的中国年氛围,在浓浓中国风中尽显中华优秀传统文化的魅力。组图丨铜官古镇年味浓,国潮灯会演绎传统非遗魅力长沙晚报掌上长沙1月23日讯(全媒体记者周数邑通讯员叶友朋)大年初一开始,铜官窑古镇迎来了新年的第一波客流。春节期间第四届铜官庙会过大年暨首届自贡国潮灯会吸引了各地的游客前来打卡,四川攀西地区阳光之旅火爆!雅西高速23日晚持续降雪或交通管制这个春节,四川攀西地区冬日阳光之旅十分火爆。红星新闻记者从凉山州文化广电和旅游局获悉,春节假期前三天,全州景区共接待游客576683人次,同比增长24。1,门票收入139。74万元31省份经济成绩单揭晓安徽等16地跑赢全国日前,31省份2022年主要经济数据正式出炉。据决策杂志统计分析,经济总量方面,粤苏鲁继续稳坐前三把交椅,浙江位居第四。与2022年全国线增速3相比,有16个省份的经济增速跑赢。这商业早报阿里巴巴新一轮组织架构调整国美电器被呈请破产清算快讯阿里巴巴新一轮组织架构调整领展进军新加坡市场万达电影携手IMAX创一吉尼斯世界纪录国美电器被呈请破产清算01商务部指导电商平台快递企业完善人员轮换预案,保障业务正常运转商务部新中国密码女神破解美国顶级加密算法,填补国内空白,奖励700万2004年8月,在美国加州召开的一场国际密码大会上。各国密码学研究人员齐聚一堂,相互探讨着高科技的密码学。其中一位来自美国的密码学家夸夸其谈,一脸骄傲地向其他国家炫耀美国研发的密码苹果将于2024年推出重大iPadPro改造,预计将采用OLED面板等苹果最近更新了iPadPro系列,配备了更快的M2处理器,增强了性能,延长了电池寿命。虽然这些变化在上次更新中是渐进式的,但该公司希望在2024年对iPadPro进行更新。自201iPhone不再是中国造?未来外国产的比例将提高至四分之一众所周知,苹果虽然是目前全球第二大以及最赚钱的手机品牌,但它是不生产手机的,只是设计,iPhoneiPadMac等产品主要交给富士康和硕和纬创等代工厂生产。而这些大工厂主要的产品都Matlab和Python环境下的深度学习小项目MATLAB环境下基于深度学习的图像去块(ImageDeblocking)该算法程序训练一个经典的降噪卷积神经网络(DnCNN),并使用DnCNN网络减少JPEG压缩伪影(comp
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网