7   呼叫Calls 呼叫由Call类处理 7.1 子类化Call类 要使用Call类,应用程序应创建子类,如: class MyCall : public Call { public: MyCall(Account &acc, int call_id = PJSUA_INVALID_ID) : Call(acc, call_id) { } ~MyCall() { } // Notification when call's state has changed. virtual void onC…
6. 媒体(Media) 媒体对象是能够产生媒体或接受媒体的对象. Media的重要子类是AudioMedia,它代表音频媒体.PJSUA2支持多种类型的音频媒体对象: 捕获设备的AudioMedia,用于从声音设备捕获音频. 播放设备的AudioMedia,可以播放音频到声音设备. 呼叫音频媒体,用于向远程人员发送和接收音频. AudioMediaPlayer,播放WAV文件. AudioMediaRecorder将音频录制到WAV文件. 将来可能会添加更多的媒体对象. 6.1 音频会议桥 会…
3. PJSUA2高级API PJSUA2是PJSUA API以上的面向对象抽象.它为构建会话发起协议(SIP)多媒体用户代理应用程序(也称为IP / VoIP软电话)提供高级API.它将信令,媒体和NAT穿越功能结合到易于使用的呼叫控制API,帐户管理,好友列表管理,在线状态和即时消息中,以及多媒体功能,如本地会议,文件流,本地播放和语音录制和强大的NAT穿越技术,利用STUN,TURN和ICE. PJSUA2在PJSUA-LIB API之上实现.SIP和媒体功能和对象建模遵循PJSUA-LI…
第五章 帐户(号) 帐户提供正在使用该应用程序的用户的身份(或身份).一个帐户有一个与之相关的SIP统一资源标识符(URI).在SIP术语中,该URI用作该人的记录地址( Address of Record,AOR),并且用作传出请求中的From头. 帐户可能有也可能没有与之相关联的客户注册.帐户也与路由集和一些认证凭证相关联,这些凭证在使用该帐户发送SIP请求消息时使用.帐户还具有状态,当它们订阅该帐户时,该状态将被报告给远端(远程对等体),或者如果为该帐户启用了发布,则该状态发布到呈现(Pr…
4.端点ENDPOINT Endpoint类是一个单例类,应用程序必须在此类实例之前创建一个并且最多只能创建一个,然后才能执行任何操作.同样,一旦这个类被销毁,应用程序就不能调用该库的任何API.这个类是PJSUA2的核心类,它提供了以下功能: 启动和关机 配置的定制,如核心UA(用户代理)SIP配置,媒体配置和日志配置 本章将介绍上述功能. 要使用Endpoint类,通常应用程序不需要进行子类化(再写继承于该类的子类,简称子类化(subclass)),除非: 应用程序希望实现/重载端点回调方法…
11 网络问题 11.1 IP地址更改 请参阅wiki 处理IP地址更改.请注意,本指南使用PJSUA API作为参考. 11.2 被阻止/过滤的网络 请参阅维基百科 通过阻止或过滤的VoIP网络…
12 PJSUA2 API 参考手册 12.1 endpoint.hpp PJSUA2基本代理操作.  namespace pj PJSUA2 API在pj命名空间内. 12.1.1 class Endpoint #include <endpoint.hpp> 端点表示pjsua库的一个实例. 在应用程序中只能有一个pjsua库的实例,因此这个类是一个单例. 公有函数 1)Endpoint() 默认构造函数. 2)virtual  ~Endpoint() virtual 析构函数 3)Vers…
9. PJSUA2示例应用程序 9.1 示例应用程序 9.1.1 C++ pjsip-apps/src/samples/pjsua2_demo.cpp 是一个非常简单可用的C++示例应用程序. /* $Id: pjsua2_demo.cpp 5467 2016-10-21 07:55:41Z nanang $ */ /* * Copyright (C) 2008-2013 Teluu Inc. (http://www.teluu.com) * * This program is free sof…
8  好友(存在)Buddy PJSUA2的功能是围绕Buddy类为中心展开的.该类表示一个远端好友(伙伴,一个人或一个SIP端点). 8.1 子类化Buddy类 要使用Buddy类,通常应创建子类,如: class MyBuddy : public Buddy { public: MyBuddy() {} ~MyBuddy() {} virtual void onBuddyState(); }; 在子类中,应用程序可以实现好友回调,以获得好友状态更改的通知. 8.2 订阅好友的状态 要订阅好友…
10 媒体质量(Media Quality) 10.1 音频质量 如果遇到音频质量问题,可尝试以下步骤: 遵循指南:使用pjsystest测试声音设备. 识别声音问题并使用以下步骤进行故障排除:检查声音问题. 使用诸如PJSUA的低级API进行测试可能更容易,因为我们已经有一个内置的pjsua示例应用程序(位于pjsip-apps / bin中)进行测试.但是,也可以使用PJSUA2 API(如本地音频环回,WAV文件录制)进行测试. 10.2 视频质量 对于视频质量问题,步骤如下: 由于缺少视…