IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> XMPP Client 流程及入门 -> 正文阅读

[移动开发]XMPP Client 流程及入门

???????

目录

1. Smack Android Demo

1.1 WebRtc 交互流程图

1.2 源码分析

1.2.1??创建PeerConnectionFactory

1.2.2?创建PeerConnection

1.2.3?创建并添加本地音频轨到PeerConnection -?AddTracks

1.2.4?创建Offer,CreateOffer???????

2. Janus 服务器


???????

目录

1. Smack Android Demo

1.1 WebRtc 交互流程图

1.2 源码分析

1.2.1??创建PeerConnectionFactory

1.2.2?创建PeerConnection

2. Janus 服务器


???????

1. Smack Android Demo

1.1 WebRtc 交互流程图

两个客户端按照Session Description Protocol(SDP协议)交换双方的元数据。???????

  • 天蓝色背景表示两个需要建立P2P通信的两个端点,端上运行着peerconnect_client程序。其中呼叫端成为Caller,被呼叫端为Callee。在端上执行的步骤均以黑色字体展现。
  • 粉色背景表示的是信令服务器,运行着peerconnect_server程序。端与服务器的信令交互过程也以粉色字体展示。
  • 橘红背景表示的是STUN服务器,运行着STUN服务器程序。工程中以谷歌提供的STUN服务器作为STUN测试服务器,地址为"stun:stun.l.google.com:19302"。端与STUN服务器的交互也以橘红色的字体展示。
  • 以绿色字体展示端与端之间的音视频传输。

1.2 源码分析

当WebRTC的端与信令服务器建立连接之后,可以通过与服务器的信令交互获知对等端点的存在,进一步通过信令向对端发起呼叫。在发起呼叫之前,发起方需要在本地做一些初始化工作,创建两个重要的对象:PeerConnectionFactory和PeerConnection。

1.2.1??创建PeerConnectionFactory

PeerConnectionFactory提供的能力——公有方法

  • 创建PeerConnection:CreatePeerConnection();
  • 创建音频源:CreateAudioSource(),为创建音频Track提供参数;
  • 创建视频轨:CreateVideoTrack();
  • 创建音频轨:CreateAudioTrack();
  • 获取ChannelManager:channel_manager();

1.2.2?创建PeerConnection

PeerConnectionObserver是PeerConnection的回调接口,应用层可以必须提供回调接口的实现,以便响应PeerConnection的事件。这些接口大致分为如下几类:

状态相关回调:

  • OnSignalingChange:信令状态改变。
  • OnConnectionChange:PeerConnection状态改变。

远端流或者轨道的添加或者移出:

  • OnAddStream:收到远端Peer的一个新stream。
  • OnRemoveStream:收到远端Peer移出一个stream。
  • OnAddTrack:当一个receiver和它的track被创建时。Plan B 和 Unified Plan语法下都会被调用,但是Unified Plan语法下更建议使用OnTrack回调,OnAddTrack只是为了兼容之前的Plan B遗留的接口,二者在同样的情况下被回调。
  • OnTrack:该方法在收到的信令指示一个transceiver将从远端接收媒体时被调用,实际就是在调用SetRemoteDescription时被触发。该接收track可以通过transceiver->receiver()->track()方法被访问到,其关联的streams可以通过transceiver->receiver()->streams()获取。只有在Unified Plan语法下,该回调方法才会被触发。
  • OnRemoveTrack:该方法在收到的信令指示某个track中将不再收到媒体数据时触发。Plan B语法下,对应的receiver将被从PeerConnection中移出,并且对应track将被设置为muted状态;Unified Plan语法下, 对应的receiver将被保留,对应的transceiver将改变direction为仅发送sendonly 或者非活动inactive状态

ICE过程相关:

  • OnRenegotiationNeeded:需要重新协商时触发,比如重启ICE时。
  • OnIceCandidate:收集到一个新的ICE候选项时触发。
  • OnIceCandidateError:收集ICE选项时出错。
  • OnIceCandidatesRemoved:当候选项被移除时触发。
  • OnStandardizedIceConnectionChange:符合标准的ICE连接状态改变。
  • OnIceGatheringChange:ICE收集状态改变。
  • OnIceConnectionReceivingChange:ICE连接接收状态改变。
  • OnIceSelectedCandidatePairChanged:ICE连接所采用的候选者对改变。

DataChannel相关:

  • OnDataChannel:当远端打开data channel通道时触发。

1.2.3?创建并添加本地音频轨到PeerConnection -?AddTracks

初始化本地的媒体,也即创建本地的音频轨(AudioTrack)、视频轨(VideoTrack)、数据通道(DataChannel),并将这些本地的媒体轨道添加到PeerConnection对象中。

1.2.4?创建Offer,CreateOffer???????

可调用PeerConnection::CreateOffer()创建本地SDP对象。

CreateOffer方法执行过程是比较明朗的,也有必要将涉及的基本观念、设计方式交代下:

  • WebRTC中将CreateOffer、CreateAnswer、SetLocalDescription、SetRemoteDescription、AddIceCandidate这5个与SDP会话相关的API认为是一个Operation,这些Operation必须是挨个执行,不能乱序,不能同时有两个交互执行。因此,设计了一套操作链的接口,由OperationsChain类提供此功能。当链入一个操作时,如果队列中没有其他操作,那么该操作会被立马执行;若是操作链中存在操作,那么本操作就入队操作链,等待上一个操作执行完成之后,以回调的形式(即上述代码中的operations_chain_callback回调方法)来告知执行下一步操作。
  • CreateSessionDescription,ObserverOperationWrapper相当于一个封装了 "Offer操作结果回调 + 操作链操作完成回调"的一个对象,一直沿着CreateOffer调用链往下传,直到能够判断是否能成功创建Offer的地方,创建Offer这个操作完成的地方,然后去触发其承载的回调函数,以便告知上层操作结果,然后触发下一个操作。具体见源码
    ?

1.?webrtc服务器janus android客户端编译学习三???????

2.?WebRTC入门系列2:RTCPeerConnection

?

3.?Peer Connection

4.WebRTC源码分析-呼叫建立过程之一(综述)

2. Janus 服务器

1.?Janus源码分析(2)——主入口main

?2.?Janus源码分析(5)——echotest分析

?3.?WebRTC多人音视频解决方案-流量对比

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:35:19  更:2021-08-21 15:35:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:17:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码