又称P2P会议SDK2.0

产品介绍

P2P会议模块可实现一对一或多方同时进行音视视频互动。

产品特点

  • 支持音视频通过P2P的方式传输。
  • 支持多种视频分辨率。
  • 支持H264,H265等视频传输格式。
  • 支持PCM的音频传输格式。

应用场景

  • 视频通话:可实现类似微信一样的一对一或多人视频通话。
  • 视频会议:多方视频互动进行会议讨论和分享

产品规格

  规格项 规格说明
功能规格 回音消除 对讲时消除减轻音频回音,使音频更清晰
硬件加速 使用GPU等硬件来进行视频编解码、合成的加速
H.264 应用最广的高性能视频编码器
H.265 更高压缩比、更节省带宽的视频编码器
参数规格 最大采集分辨率 可设置,不建议超过1080P
最大传输分辨率 可设置,不建议超过1080P
最大码率 可设置,不建议过大
最大帧率 可设置,不建议超过30fps

平台兼容性

规格/平台 Android iOS Web
功能规格 回音消除
硬件加速
H.264编码
H.265编码

与P2P直播模块SDK的区别

直播模块的视频流向,采集端采集视频,可以被多个播放端播放,视频流是单向的。

(图1)直播模块SDK视频流向图

P2P会议模块视频流向,会议SDK视频流是双向的,两两个节点之间都可以相互打开视频。


(图2)P2P会议模块SDK视频流向图

Demo的使用

Android

下载SDKhttp://peergine.com/#/download?active=4

解压后安装/DemoApp/DemoConference2.apk,启动后进入以下界面:

Demo登陆界面

输入正确的ID后点击LOGIN按钮后会进入一下界面:

Demo主界面

注意: 在主席ID处输入本客户端Demo登陆ID后,本客户端将成为此会议中的主席端,会议ID处输入其他客户端ID则本客户端作为成员端加入会议,请确保主席端首先创建和加入会议,并保持在线。

其他按钮的作用:

RECORDSTART 将对主席端进行录音录像。

EXIT 退出主界面

MSG 发送消息给其他产生连接的客户端

SVRREQUEST 按钮是发送自定义消息到P2P服务器端。

IOS

和AndroidDemo界面一致。

WebHtml5

WebHtml5Demo界面

按钮功能和Android界面一致。

准备工作

准备工作

P2P会议模块SDK基于穿透科技Peergine中间件的节点对象、组对象和音视频对象。因此在音视频对讲前需要创建节点对象登录到P2P服务器(初始化),需要创建组对象(Start),并加入组(JoinRequest),同时要支持音视频需要初始化音视频对象(VideoStart,AudioStart),最后需要指定对应节点打开视频(VideoOpenRequest)。

P2P会议模块SDK通过一个总的回调上报事件,不同的事件使用sAction的参数表示。

前提条件

ANDROID

请确保满足以下开发环境要求:

  • Android SDK API Level Level ≥ 15
  • Android Studio 3.0 或以上版本
  • App 要求 Android 4.1 或以上设备

IOS

请确保满足以下开发环境要求:

  • Xcode 10.0+
  • iOS 8.0+ 真机(iPhone 或 iPad)
  • 请确保您的项目已设置有效的开发者签名

WebHtml5

请确保满足以下开发环境要求:

  • 操作系统: Microsoft Windows 7+
  • 安装Chrome 75+浏览器
  • 安装 pgHtml5Bridge 后台服务插件
  • 确保部署环境为localhost或http协议

添加SDK

ANDROID

  • 下载  Android SDK ,解压并打开。
  • 将文件夹 pgLibConference 作为模块(Module)导入你创建的工程。
  • 将文件夹 pgPluginLib 作为模块(Module)导入你创建的工程。
  • 在你的 Module 中设置添加对 pgLibConference, pgPluginLib 的依赖
  • 后期升级需要替换 pgLibConference 中的java文件和替换pgPluginLib中的jar、so等文件
  • 添加必要的权限

现在你已经设置好了 Android Studio 开发环境,可以开始使用 Android SDK 了!

IOS

  • 下载 IOS SDK,解压并打开。
  • 将文件夹 pgLibConference拷贝到创建的工程。
  • 将文件夹 pgPluginLib 拷贝到创建的工程。
  • 将文件夹pgPluginLib下pgDybLiveMulti_device.framework添加到工程依赖
  • 在BuildSetting的Other Link Flags参数中增加:-liconv -lz -lresolv链接选项。
  • 禁止使用bitcode
  • 工程中引用pgLibConference文件夹下的所有源文件。
  • 后期升级方法是替换 pgLibConference 中的mm文件,替换 pgPluginLib 中的framework文件。
  • 添加一系列的系统framework
CoreVideo.framework
CoreAudioKit.framework
UIKit.framework
AdSupport.framework
CoreGraphics.framework
CoreMedia.framework
AVFoundation.framework
AudioToolbox.framework

现在你已经设置好了 XCode 开发环境,可以开始使用 IOS SDK 了!

Web HTML5

  • 下载 Web HTML5 SDK,解压并打开。
  • 拷贝并引用 dist/pgLibConference2.js
  • 拷贝并引用 DemoConference2/pgHtml5Bridge.js
  • 安装SDK中附带的pgHtml5Bridge服务程序。
  • 后期升级方式是安装新的 pgHtml5Bridge服务程序 和拷贝覆盖以上提到的js文件

现在你已经设置好了 Web开发环境,可以开始使用Web HTML5 SDK 了!

初始化

ANDROID

IOS

Web HTML5

注意:初始化之后会有登录结果的事件回调

创建会议,初始化音视频

ANDROID

IOS

Web HTML5

快速开始

打开预览

ANDROID

IOS

Web HTML5

请求加入会议

成员端调用请求加入会议

请求加入会议之后主席端会收到请求加入会议事件

需要在请求加入会议事件产生后将节点加入会议

主席节点将成员节点加入会议之后,会产生加入会议的事件

打开会议节点视频

请求打开会议中某节点视频

如果该节点以经加入会议并初始化了音视频,会产生回调事件

在回调事件中接收视频请求

打开的对端视频会在传入的SurfaceView中显示,将SurfaceView添加到桌面的Layout就能显示播放对讲视频。

进阶教程

外部采集视频

当使用的视频源是网络(RTSP、RTMP、SIP等)视频源时,或者摄像头特殊默认视频采集不能生效的情况下,中间件支持外部采集视频的方法。(P2P会议SDK只支持安卓)

具体查看文件

pgPluginLibExter\src\main\java\com\peergine\plugin\exter\ VideoAudioInputExternal.java

外部采集重点需要实现

pgDevVideoIn.OnCallback中的回调函数,以及调用

pgDevVideoIn.CaptureProcExt 函数将视频帧输入中间件。

外部采集API说明文档

录像录音

参数录像模式的定义

功能扩展

P2P会议SDK是在Peergine中间的基础上封装实现的,只封装了会议的业务逻辑。如果客户有其他SDK中未提供的功能需求,可联系穿透科技技术人员协商获取扩展函数。

扩展函数示例:

SDK录像函数只能录制指定节点的音频数据,此扩展函数可以录制设备上的麦克风和扬声器上的音频,也就是对讲音频。

文件传输

文件传输是在Peergin中间件的基础上封装实现的。

  • Peer节点建立连接:加入会议,或者调用PeerAdd函数使得两个P2P节点建立连接,产生PeerSync的事件。
  • 创建文件传输通道:调用FileListenAdd或者FileConnectAdd建立两点间的传输通道。假设在A端调用FileListenAdd(B),那么在B端调用FileConnectAdd(A)产生的文件传输通道就可以自动联通,产生FileSync事件之后就可以进行文件传输。
  • 文件传输请求:上传Put和下载Get。
  • 文件传输进度上报。
文件传输对象初始化简要流程图

以上就是文件传输模块使用的整体流程。具体使用可以参考Demo。

Demo使用文件传输分析说明

创建文件传输通道,Peer节点连接后,针对每个节点建立两条文件传输通道。实际上一条通道就可以满足上传下载的全部需求。

文件传输通道同步后添加到桌面显示以供操作,只有回调FileSync之后才能调用其他文件传输操作:

上传和下载(path是文件真实路径;peerpath是建议对端的存储路径,demo使用这个参数传输文件名):

上传和下载请求事件,(Demo里是自动同意传输,并将文件保存到默认测试路径):

文件传输状态事件上报(每条通道同时只能传输一个文件,上报FileFinish,FileAbort之后才能传输其他文件):

API参考

使用的新类是:pgLibConference2

新的 Demo是: DemoConference2
以下是API接口说明:以下接口说明仅供参考,实际API和详细说明以源码中注释说明为准。
以下函数原型使用的是安卓版本的,IOS和Web HTML5都封装了同名函数。

Version

SetEventListener

Initialize

Clean

GetNode

GetSelfPeer

PeerAdd

PeerDelete

PeerGetInfo

MessageSend

RpcRequest

setRpcResponse

PreviewCreate

PreviewDestroy

PreviewStart

PreviewStop

Start

Stop

NotifySend

MemberAdd

MemberDel

JoinRequest

VideoStart

VideoStop

VideoOpenRequest

VideoOpenResponse

VideoClose

VideoCheckStatus

VideoControl

VideoCamera

AudioStart

AudioStop

AudioMuteInput

AudioMuteOutput

AudioSpeech

RecordStart

RecordStop

FileListenAdd

FileConnectAdd

FileDelete

FilePutRequest

FilePutAccept

FilePutReject

FileGetRequest

FileGetAccept

FileGetReject

FileCancel

事件常量

发表评论

邮箱地址不会被公开。 必填项已用*标注

51 + = 59