WebRTC

WebRTC简介及实战应用 — 从0到1实现实时音视频聊天等功能 简单来说,RTCDataChannel 就是在点对点连接中建立一个双向的数据通道,从而获得文本、文件等数据的点对点传输能力。它依赖于流控制传输协议(SCTP),SCTP 是一种传输协议,类似于 TCP 和 UDP,可以直接在 IP 协议之上运行。但是,在 WebRTC 的情况下,SCTP 通过安全的 DTLS 隧道进行隧道传输,该隧道本身在 UDP 之上运行。另外总的来说 RTCDataChannel 和 WebSocket 很像,只不过 WebSocket 不是 P2P 连接,需要服务器做中转。 阅读详情

转载请注明出处:http://www.cnblogs.com/fangkm/p/4364553.html 

WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能。而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构建自己的音视频对聊功能。无论是使用前端JS的WebRTC API接口,还是在WebRTC源码上构建自己的对聊框架,都需要遵循以下执行流程:

上述序列中,WebRTC并不提供Stun服务器和Signal服务器,服务器端需要自己实现。Stun服务器可以用google提供的实现stun协议的测试服务器(stun:stun.l.google.com:19302),Signal服务器则完全需要自己实现了,它需要在ClientA和ClientB之间传送彼此的SDP信息和candidate信息,ClientA和ClientB通过这些信息建立P2P连接来传送音视频数据。由于网络环境的复杂性,并不是所有的客户端之间都能够建立P2P连接,这种情况下就需要有个relay服务器做音视频数据的中转,本文本着源码剖析的态度,这种情况就不考虑了。这里说明一下, stun/turn、relay服务器的实现在WebRTC源码中都有示例,真是个名副其实的大宝库。

上述序列中,标注的场景是ClientA向ClientB发起对聊请求,调用描述如下:

  • ClientA首先创建PeerConnection对象,然后打开本地音视频设备,将音视频数据封装成MediaStream添加到PeerConnection中。
  • ClientA调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保存当前音视频的相关参数。ClientA通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并通过Signal服务器发送给ClientB。
  • ClientB接收到ClientA发送过的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个应答的SDP对象,通过PeerConnection的SetLocalDescription的方法保存该应答SDP对象并将它通过Signal服务器发送给ClientA。
  • ClientA接收到ClientB发送过来的应答SDP对象,将其通过PeerConnection的SetRemoteDescription方法保存起来。
  • 在SDP信息的offer/answer流程中,ClientA和ClientB已经根据SDP信息创建好相应的音频Channel和视频Channel并开启Candidate数据的收集,Candidate数据可以简单地理解成Client端的IP地址信息(本地IP地址、公网IP地址、Relay服务端分配的地址)。
  • 当ClientA收集到Candidate信息后,PeerConnection会通过OnIceCandidate接口给ClientA发送通知,ClientA将收到的Candidate信息通过Signal服务器发送给ClientB,ClientB通过PeerConnection的AddIceCandidate方法保存起来。同样的操作ClientB对ClientA再来一次。
  • 这样ClientA和ClientB就已经建立了音视频传输的P2P通道,ClientB接收到ClientA传送过来的音视频流,会通过PeerConnection的OnAddStream回调接口返回一个标识ClientA端音视频流的MediaStream对象,在ClientB端渲染出来即可。同样操作也适应ClientB到ClientA的音视频流的传输。

这里的流程仅仅是从使用层面上描述了一下,具体内部都做了什么、怎么做的,以后的文章中会慢慢细扒,万事开头难,自我鼓励一下。

Web前端的WebRTC攻略(一)基础介绍 WebRTC 全称是(Web browsers with Real-Time Communications (RTC)大概2011年,谷歌收购了 GIPS,它是一个为 RTC 开发出许多组件的公司,例如编解码和回声消除技术。Google 开源了 GIPS 开发的技术,并希望将其打造为行业标准。收购花了一大笔钱,谷歌说开源就开源,确实不得不佩服,但显然对于Googl来说,打造音视频的开源生态有着更大的价值。“浏览器 + WebRTC”就是 Google 给出的一个答案。 阅读详情

相关推荐

【WebRTC】开源项目Webrtc-streamer介绍

WebRTC-Streamer一个用于通过简单的信令机制(参见 api)流式传输 WebRTC 媒体源的实验项目,支持以下媒体源:捕获设备屏幕捕获mkv 文件RMTP/RTSP 源同时该项目也兼容 WHEP 接口。

Bl_a_ck的博客 5096

WebRTC简介及使用

WebRTC 只是一个媒体引擎,上面有一个 JavaScript API,所以每个人都知道如何使用它(尽管浏览器实现仍然各不相同),本文对 WebRTC(网页实时通信)的相关内容进行简要介绍。WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌 2010 年以 6820 万美元收购 Global IP Solutions 公司而获得的一项技术。WebRTC 提供了实时音视频的核心技术。

明天你好的博客 3万+

WebRTC学习—WebRTC详解

目录 一:WebRTC学习了解   (一)WebRTC应用场景   (二)WebRTC的难点   (三)学习流程   (四)学习目标 二:WebRTC介绍   (一)概述   (二)WebRTC可以实现的功能   (三)WebRTC学习内容 三:WebRTC原理与架构   (一)核心层解析   (二)引擎层:音频引擎、视频引擎、传输模块 补充:虽然UDP很适合实时通讯,但是也有需要使用TCP的场景 四:WebRTC目录结构   (一)主目录结构   (二)WebRTC Module目录 五:WebRTC.

Linuxhus的博客 3181

Web即时通信技术——WebRTC

WebRTC(Web Real-Time Communication)是一个开放的项目,旨在在网页端提供实时的音频、视频和数据通信,不需要插件或其他附加软件。它是由Google主导,并在Mozilla、W3C和IETF等组织的支持下开发。WebRTC的目标是使浏览器成为实时通信的强大平台,支持点对点(peer-to-peer)通信。官方网址:https://webrtc.org/WebRTC中文网 https://webrtc.org.cnWebRTC官网 https://webrtc.org/

qq_42241500的博客 6342

webRTC基础入门

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、webRTC介绍二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供

weixin_39736022的博客 5741

srs配置WebRTC

1. WebRTC简介 由Google发起的实时通讯解决方案,其中包含视音频采集,编解码,数据传输,和音视频展示等功能 不光支持Web之间的音视频通讯,还支持Android以及IOS端,此外由于该项目是开源的,我们也可以通过编译C++代码,从而达到全平台的互通 Web开发者可以基于集成WebRTC的浏览器提供的web API开发基于视频、音频的实时通信应用。 WebRTC基于UDP 2. SRS配置WebRTC srs4.0开始陆续支持WebRTC的推流和播放功能 发展如下所示 SRS 4.0.14,

a18796007675的博客 3996

WebRTC是什么

WebRTC(Web Real-Time Communication)是什么?标准?API?还是一个项目?众说纷纭。那么WebRTC到底是什么呢?

ZDK_csdn的博客 1万+

WebRTC 是什么意思?webrtc是什么技术,WebRTC插件会泄漏什么信息(webrtc原理,webrtc协议)

WebRTC是一种浏览器插件,通常被需要快速直接连接的网络应用程序所应用。WebRTC通过UDP协议来建立连接,因此它并不会通过你在浏览器配置文件中使用的代理服务器进行路由。即便您使用了代理,网站也能借此获取您真实的公共和本地IP地址。该插件可被用于泄漏你的本地IP地址或追踪媒体设备。 如何避免WebRTC读取ip地址 WebRTC协议可以绕过代理取到一些本机的网卡IP和真实的上网公网IP地址,那么我们可以使用替换模式来让网站取到我们指定的IP信息,或用禁用模式,让被访问的网站不能通过WebRtc协议来

baijiawang123的博客 1490

【WebRTC】M1 iOS编译WebRTC.framework与WebRTC.xcframework

iOS编译WebRTC Error: Command 'python3 src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-browser-clang ERROR at //build/config/ios/ios_sdk.gni:139

熊猫是只大老鼠的博客 1497

webRTC入门: 打包webRTC库应用到自己的工程中

打包webRTC库在linux下打包webRTC库链接到自己的工程中webRTC Linux SDK编译静态库webRTC指定target_os为Linux后,根据gn的编译规则 并不像android那样会生成动态库so。想要使用webRTC库 需要自己提取静态库静态库分布打开webRTC SDK目录 cd out/linux 编译目录下会生成例如peerconection_client这样的

sliver.chen的博客 8267

webRtc与H264的那些事

为什么webRtc使用H264会黑屏? WebRTC 自诞生之日起, 就代表了实时通信领域的最好的技术. 不过很长时间里, 它所支持的视频编码器只有VP8, 后来随着H265/VP9为代表的下一代视频编码器的诞生, WebRTC里出现了VP9 Codec. 而当前应用最广泛的H264 却一直不受待见. 一直到Cisco 宣布旗下的H264 Codec开源为OpenH264, 并且替所有OpenH264的使用者支付了H264的专利费, 以次为契机, 在IETF的WebRTC会议中, 把H264和VP8都列入

zhuchengcheng1992的博客 2360

webrtc系列1—— webrtc入门知识

文章目录1. 什么是WebRTC2. WebRTC框架介绍详细组件介绍3. 模块细致讲解国内方案厂商WebRTC发展前景文章借鉴: 1. 什么是WebRTC WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳...

大帅在唱歌 8214

WebRTC Adapter:跨浏览器兼容的WebRTC解决方案

WebRTC Adapter 是一个用于隔离应用程序与WebRTC规范变化和浏览器前缀差异的垫片(shim)。尽管现代浏览器中的前缀差异已经大部分消失,但不同浏览器之间的行为差异仍然存在。WebRTC Adapter 旨在解决这些问题,确保您的WebRTC应用程序在不同浏览器中表现一致。该项目最初是WebRTC组织在GitHub上的一个子项目,现已独立出来。我们致力于保持旧仓库与新版本的同步更新。

m0_74823317的博客 1026

H5播放webrtc视频

一、简介 WebRTC概念 WebRTC是由Google主导的,由一组标准、协议和JavaScript API组成,用于实现浏览器之间(端到端之间)的音频、视频及数据共享。WebRTC不需要安装任何插件,通过简单的JavaScript API就可以使得实时通信变成一种标准功能。 为什么使用webrtc 现在各大浏览器以及终已经逐渐加大对WebRTC技术的支持。下图是webrtc官网给出的现在已经提供支持了的浏览器和平台。 二、H5播放webrtc webrtc播放经过不断探索,基本上没有现行的库来直接播放

lixiang987654321的专栏 1万+

【webrtc】PlanB 回调onAddStream和onAddTrack

planb

突围 943

WebRTC[16]-WebRTC与VoIP的对比

在行业有些混乱的今天,WebRTC已经成为除了传统的Voice over IP 和 Video over IP (V.VoIP)之外的又一个可行的基于IP的通信解决方案。凭借雄厚的产业后盾,WebRTC正在被大力推广。这些技术是互补还是竞争?他们能够共存吗?他们如何共存并惠及最终用户?他们各自的用处是什么?何处有重叠? 目前,很多应用WebRTC的场景中,音频处理方面都使用......

liuzhen007的专栏 4238

WebRTC 方案全面介绍

WebRTC(Web Real-Time Communication)是一种支持浏览器和移动端实时音视频通信的技术。

专注前端开发领域,深耕 Python AI Agent应用开发,热爱探索 Web 与人工智能的前沿技术。 1531

射频收发机(RF Transceiver)

2,既然原来外差的思路是把声音频率的信号,通过混频搬移到高频电磁波频率,那对高频率信号放大的时候,是不是也可以先在比较低的射频频率进行放大,然后再通过频率搬移的方式,将放大后的信号搬移到高频率呢?频率搬移过程中,中间预先设定的固定射频频率被称为“中频”(中间频率,IF,Intermediate Frequency),由于这个频率超出了声音可听的范围,是“超声波”(supersonic),所以被命名为“超外差”(Super-Heterodyne)。混频后的信号在0频率附近,可能会发生DC偏移。

2301_77317229的博客 1122
上一篇: Android jniLibs下目录详解(.so文件)
下一篇: CentOS、Ubuntu、Debian三个linux比较异同
simon2014
博客等级 码龄8年 5粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值