webrtc学习--一对一通话

webrtc一对一通话

在webrtc一对一通话中,所涉及到的方面很多,本章节主要讲一对一通话中的信令部分,对于其他的采集,编码,传输,解码,渲染部分,直接通过API来进行。不涉及深入部分。webrtc源码中,peerconnection中的例子,就是一个一对一的通话demo。这里面,暂时先不讲c++版本。先以js版本来进行了解学习

0. 前言

推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:

1. webrtc一对一通话时序图

PeerA signal_server stun/turn server PeerB connect connect Create PeerConnection Add Streams Create Offer setLocalDescription bind request send SDP Offer relay SDP Offer Create PeerConnection Add Streams setRemoteDescription Create Answer setLocalDescription send SDP Answer relay SDP Answer bind request setRemoteDescription ICE Requst onIceCandidate send candidate relay candidate add ice candidate ICE Requst onIceCandidate send candidate relay candidate P2P Channelsss onAddStreams loop [P2P] PeerA signal_server stun/turn server PeerB

2. webrtc一对一通话

2.1 webrtc一对一通话简述

在一对一通话中,我们需要的是,在同一个房间里面,有且仅有两个人,当房间已有两个人时,该房间就不能再有其余的人进入房间了,当该房间不足两人时,才可以再次进入该房间,而且也需要满足最多只能有两个人在该房间中。

2.2 webrtc 一对一通话步骤

在一对一通话中,有上面的时序图所示,开始时,我们需要开启信令服务器(singnal_server服务)和ICE服务器(stun/turn服务)。会话双方都需要连接信令服务器。发起者首先创建offer并发送给信令服务器。信令服务器接收到offer并转发给接收者,接收者设置相应的参数后,创建与之对应的answer,并通过信令服务器转发给发起者。发起者接收answer,并设置对应的参数。开始打洞服务了。在理想的状态下(可以打洞)。首先,发起者,接收者绑定打洞服务器。发起者发送一个candidate给信令服务器,信令服务器转发给接收者,接收者添加发送者的candidate,开始向ICE服务器发送ICE Requst。

2.2.1 webrtc一对一通话–信令服务连接

一对一双方通话,首先双方都要连接在同一个信令服务器中,并保持连接正常。

2.2.2 webrtc一对一通话–发起者创建offer过程

发起者创建offer类型的SDP消息,调用setLocalDescription方法将该Offer保存到,然后通过信令服务器将Offer发送给被呼叫方。

2.2.3 webrtc一对一通话–接收者创建answer过程

接收者收到Offer类型的SDP消息后,调用setRemoteDescription方法将Offer保存,接收者创建Answer SDP消息,调用setLocalDescription方法保存。接收者将Answer消息通过信令服务器发送给发送者。

2.2.4 webrtc一对一通话–媒体协商完毕

发起者接收到信令服务器转发的Answer SDP后,调用setRemoteDescription方法将Answer保存,媒体协商完毕。

2.2.5 webrtc一对一通话–p2p会话建立

发起者和接收者完成上面的步骤后,开始向ICE服务请求打洞了,通过onIceCandidate回调获取打洞信息(Candidate)并通过信令服务器发送给对方。其中,如果打洞成功,那么开始p2p传输数据。如果打洞失败,那么开始进行中继转发数据。

3. webrtc一对一通话测试

测试前,需要准备好摄像头。这里面,我就采用虚拟摄像头来进行。

3.1 安装虚拟摄像头

run.bat

@echo off
rem 卸载screen-capture-recorder-x64.dll
regsvr32 /u /s screen-capture-recorder-x64.dll
rem 安装screen-capture-recorder-x64.dll
regsvr32 /s screen-capture-recorder-x64.dll

rem 卸载virtual-audio/audio_sniffer-x64.dll
regsvr32 /u /s virtual-audio/audio_sniffer-x64.dll
rem 安装virtual-audio/audio_sniffer-x64.dll
regsvr32 /s virtual-audio/audio_sniffer-x64.dll

3.2 测试代码

代码来源于码云上,可以通过例子来进行下载和学习
https://gitee.com/sevenzyh/learn-webrtc
https://github.com/Jhuster/RTCStartupDemo

在代码中,可以很方便的来进行一对一通话。

4. 参考博客

webrtc 入门第五章 一对一视频通话实现

WebRTC系列–js 实现一对一通话

WebRTC一对一通话

webrtc笔记(2): 1对1实时视频/语音通讯原理概述

webrtc一对一通话

学习WebRTC过程总结

PeerConnectionClient Demo 视频源为window抓屏

WebRTC ICE介绍

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: webrtc-qt-example是一个基于Qt框架开发的WebRTC示例项目。 WebRTC是一种开源的实时通信技术,能够支持音频、视频和数据的实时传输。它通过浏览器之间的端对端连接,实现了高质量的实时通信。 webrtc-qt-example的目的是展示如何使用Qt进行WebRTC开发。Qt是一套跨平台的C++应用程序开发框架,它提供了丰富的工具和库,使开发者能够快速构建可靠的应用程序。 这个示例项目提供了一些基本的功能和界面,使开发者能够了解和学习如何将WebRTC集成到Qt应用程序中。它包含了常见的WebRTC功能,如媒体流捕获、媒体流传输、信令交换等。 通过webrtc-qt-example,开发者可以学习到如何使用Qt的多媒体模块来捕获音频、视频和媒体设备。同时,也可以学习到如何使用Qt的网络模块来进行实时信令交换和流传输。 这个示例项目还提供了一些简单的界面,方便开发者进行测试和调试。开发者可以通过该界面实现与其他WebRTC应用的通信,例如建立视频通话、音频通话等。 总之,webrtc-qt-example是一个非常实用的示例项目,可以帮助开发者快速上手并掌握WebRTC在Qt中的开发。 ### 回答2: webrtc-qt-example是一个基于Qt框架的WebRTC示例应用程序。WebRTC是一种开源项目,它提供了在浏览器之间进行实时通信的能力,包括视频和音频的传输。而webrtc-qt-example则是将这种技术集成到Qt应用程序中的一个示例。 在webrtc-qt-example中,它使用了Qt的多媒体框架和WebRTC提供的API来实现音视频的传输和显示。通过使用WebRTC的API,webrtc-qt-example可以建立点对点的连接,进行音频和视频的实时传输。 webrtc-qt-example中的代码结构清晰,易于理解和扩展。它提供了一些基本的功能,如建立连接、发送和接收音视频流、呼叫取消等。开发者可以根据自己的需求来对这些功能进行定制和扩展。 此外,webrtc-qt-example还支持一些高级特性,如媒体设备的选择、音视频的编码和解码等。开发者可以通过修改代码来选择不同的媒体设备,并且可以使用不同的编码和解码算法来满足自己的需求。 总之,webrtc-qt-example是一个很棒的WebRTC示例应用程序,它可以帮助开发者快速了解和使用WebRTC技术。无论是为了实现实时视频通话、视频会议还是其他需要音视频传输的应用场景,webrtc-qt-example都提供了一个良好的起点,帮助开发者快速上手并实现自己的需求。 ### 回答3: webrtc-qt-example是一个基于Qt框架和WebRTC技术的示例应用。WebRTC是一种用于在Web浏览器上实现实时通信的开源项目,它提供了一套丰富的API和协议,可以实现音视频通话、数据传输以及屏幕共享等功能。 webrtc-qt-example利用Qt框架提供的跨平台能力,结合WebRTC技术,展示了在Qt应用中如何实现实时通信功能。这个示例应用具有以下特点和功能: 1. 界面友好:webrtc-qt-example使用Qt的GUI绘制工具,具有美观、直观的用户界面,便于用户操作和使用。 2. 实时通信:webrtc-qt-example内置了WebRTC的音视频通信功能,可以实现实时的语音和视频通话,支持两个或多个用户之间的通信。 3. 数据传输:除了音视频通话webrtc-qt-example还支持在通话中传输数据。可以通过编写代码,实现实时文本传输或共享文件等功能。 4. 屏幕共享:webrtc-qt-example还支持屏幕共享功能,可以将自己的屏幕内容分享给其他用户,实现远程协助或在线教育等应用场景。 通过webrtc-qt-example的学习和实践,开发者可以了解并深入理解WebRTC技术的使用方法,以及在Qt框架中的应用。同时,借助webrtc-qt-example提供的示例代码和API文档,开发者可以进一步开发出更加复杂和功能丰富的实时通信应用,满足不同领域的需求。 总之,webrtc-qt-example是一个基于Qt框架和WebRTC技术的示例应用,具备实时音视频通话、数据传输和屏幕共享等功能,适用于开发者学习、实践和开发基于WebRTC的实时通信应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值