PJSUA开发文档中文版.docx





《PJSUA开发文档中文版.docx》由会员分享,可在线阅读,更多相关《PJSUA开发文档中文版.docx(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Pjsua 开发指南 关于 PJSIP:PJSIP 是一个小巧而性能优异的协议栈。请访问:http:/www.pjsip.org 获得更多信息。关于本文档:这是一份自由文档。每一个人都有权限按原样(verbatim copies)复制与分发此文档,但不允许修改。PJSUA API高级软电话的 API为构建 SIP UA 应用而设计的具有高水平的 API。模块PJSUA-API 的基本 API基本应用程序的创建、初始化、日志配置等。PJSUA-API 的信令传输管理 SIP 传输的 API。PJSUA-API 的账户管理PJSUA 帐户的管理。PJSUA-API 呼叫管理呼叫操作。PJSUA-A
2、PI 的好友、用户状态和即时消息好友管理,好友的状态和即时消息。PJSUA-API 的媒体操作媒体操作。详细说明一个为 C / C + +编程提供的 SIP 用户代理 APIPJSUA-API 是构建 SIP 多媒体用户代理应用而提供的非常高水平的 API。它把信令和媒体功能包装在一起放入一个易于使用的调用的 API 中,提供帐户管理,好友管理,状态,即时消息以及多媒体功能例如会议、文件流、本地回放、录音等。C/ C + +绑定应用程序必须与 PJSUA-lib 链接来使用这些 API。此外,该库依赖于以下库:pjsip-ua, pjsip-simple, pjsip-core, pjmedi
3、a,pjmedia-codec, pjlib-util,pjlib,应用程序还必须链接这些库。有关详细信息,请参阅入门Getting Started with PJSIP。pjsua_samples提供了一些例程: 例程:Simple PJSUA很简单的 SIP 用户代理,具有注册、打电话和媒体建立的功能,使用 PJSUA 的API,PJSUA 开发指南版权保留 可以无限分发 禁止修改!在 200 行代码内实现。PJSUA这是 PJSIP 协议和 PJMEDIA 的参考实现。 PJSUA 是基于控制台的应用程序,设计简单、易读,但功能强大,足以体现 PJSIP 和 PJMEDIA 提供的所有功
4、能。使用 PJSUA API关于如何创建和初始化 API 请参阅 PJSUA-API Basic API。PJSUA-API Basic APIPJSUA API - 高级软电话的 API基本的应用程序的创建、初始化,日志配置等。数据结构structpjsua_logging_configstructpjsua_mwi_infostructpjsua_reg_infostructpjsua_callbackstructpjsua_configstructpjsua_msg_datastructpj_stun_resolve_result定义#definePJSUA_INVALID_ID (-1
5、)#definePJSUA_DEFAULT_USE_SRTP PJMEDIA_SRTP_DISABLED#definePJSUA_DEFAULT_SRTP_SECURE_SIGNALING 1#definePJSUA_ADD_ICE_TAGS 1#definePJSUA_ACQUIRE_CALL_TIMEOUT 2000#definepjsip_cred_dup pjsip_cred_info_dupTypedefstypedef intpjsua_call_idtypedef intpjsua_acc_idtypedef intpjsua_buddy_idtypedef intpjsua_p
6、layer_idtypedef intpjsua_recorder_idtypedef intpjsua_conf_port_idtypedefvoid(*pj_stun_resolve_cb )(const pj_stun_resolve_result *result)枚举enumpjsua_create_media_transport_flag PJSUA_MED_TP_CLOSE_MEMBER = 1 enumpjsua_sip_timer_usePJSUA_SIP_TIMER_INACTIVE,PJSUA_SIP_TIMER_OPTIONAL,PJSUA_SIP_TIMER_REQUI
7、RED, PJSUA_SIP_TIMER_ALWAYS enumpjsua_100rel_usePJSUA_100REL_NOT_USED,PJSUA_100REL_MANDATORY, PJSUA_100REL_OPTIONAL enumpjsua_destroy_flagPJSUA_DESTROY_NO_RX_MSG=1,PJSUA_DESTROY_NO_TX_MSG = 2, PJSUA_DESTROY_NO_NETWORK 功能函数voidpjsua_logging_config_default (pjsua_logging_config *cfg)voidpjsua_logging_
8、config_dup (pj_pool_t *pool, pjsua_logging_config*dst, const pjsua_logging_config *src)voidpjsua_config_default (pjsua_config *cfg)voidpjsua_config_dup (pj_pool_t *pool, pjsua_config *dst, constpjsua_config *src)voidpjsua_msg_data_init (pjsua_msg_data *msg_data)pj_status_tpjsua_create (void)pj_statu
9、s_tpjsua_init (const pjsua_config *ua_cfg, const pjsua_logging_config*log_cfg, const pjsua_media_config *media_cfg)pj_status_tpjsua_start (void)pj_status_tpjsua_destroy (void)pj_status_tpjsua_destroy2 (unsigned flags)intpjsua_handle_events (unsigned msec_timeout)pj_pool_t *pjsua_pool_create (const c
10、har *name, pj_size_t init_size, pj_size_tincrement)pj_status_tpjsua_reconfigure_logging (const pjsua_logging_config *c)pjsip_endpoint*pjsua_get_pjsip_endpt (void)pjmedia_endpt*pjsua_get_pjmedia_endpt (void)pj_pool_factory*pjsua_get_pool_factory (void)pj_status_tpjsua_detect_nat_type (void)pj_status_
11、tpjsua_get_nat_type (pj_stun_nat_type *type)pj_status_tpjsua_resolve_stun_servers(unsignedcount,pj_str_tsrv,pj_bool_t wait, void *token, pj_stun_resolve_cb cb)pj_status_tpjsua_cancel_stun_resolution (void *token, pj_bool_t notify_cb)pj_status_tpjsua_verify_sip_url (const char *url)pj_status_tpjsua_v
12、erify_url (const char *url)pj_status_tpjsua_schedule_timer (pj_timer_entry *entry, const pj_time_val*delay)voidpjsua_cancel_timer (pj_timer_entry *entry)voidpjsua_perror (const char *sender, const char *title, pj_status_tstatus)voidpjsua_dump (pj_bool_t detail)详细说明基础的 PJSUA-API 控制PJSUA 的创作、初始化、启动,同时
13、还提供各种辅助功能。使用 PJSUA 库创建 PJSUA在任何事情之前,应用程序必须调用 pjsua_create()创建 PJSUA。除其他事项外,这将初始化 PJLIB,PJLIB-util,并创建一个 SIP endpoint,在调用任何 PJLIB 功能之前这是至关重要的一步。这个函数被调用后,应用程序可以创建一个内存池(使用 pjsua_pool_create(),并从命令行或文件中读取配置,初始化 PJSUA 如下。初始化 PJSUA创建 PJSUA 后,应用程序可以通过调用 pjsua_init()初始化 PJSUA。如果应用程序要设置它们,这个函数有几个参数可选。PJSUA-L
14、IB 初始化(C 语言)初始化 PJSUA 的示例(C 代码): #include #define THIS_FILEFILE static pj_status_t app_init(void)pjsua_configua_cfg; pjsua_logging_config log_cfg; pjsua_media_configmedia_cfg;pj_status_t status;/ 再做任何事情之前必须创建 PJSUA! status = pjsua_create();if (status != PJ_SUCCESS) pjsua_perror(THIS_FILE, Error init
15、ializing pjsua, status); return status;/ 使用默认配置pjsua_config_default(&ua_cfg); pjsua_logging_config_default(&log_cfg); pjsua_media_config_default(&media_cfg);/ 应用程序若要被重写,则回调 pjsua_config: ua_cfg.cb.on_incoming_call = . ua_cfg.cb.on_call_state = ./ 自定义其他设置或用配置文件初始化它们./ 初始化 pjsuastatus = pjsua_init(&ua
16、_cfg, &log_cfg, &media_cfg); if (status != PJ_SUCCESS) pjsua_perror(THIS_FILE, Error initializing pjsua, status); return status;.其他初始化PJSUA 初始化后,应用程序将通常需要/想要执行下列任务:使用 pjsua_transport_create()创建 SIP 传输。应用程序将为它支持每个传输类型(例如 UDP、TCP 和TLS)调用 pjsua_transport_create()。更多信息,请参阅 PJSUA-API 的信令传输。使用 pjsua_acc_a
17、dd()或 pjsua_acc_add_local()创建一个或多个 SIP 帐号。SIP 帐户用于向 SIP 服务器注册。更多信息,请参阅 PJSUA-API 的帐务管理。使用 pjsua_buddy_add()添加一个或多个好友。更多信息,请参阅 PJSUA-API的好友、用户状态和即时消息。选择配置声音设备,设置编解码器,设置其他媒体。更多信息,请参阅 PJSUA-API的媒体操作。运行 PJSUA完成初始化后,应用程序必须调用 pjsua_start()开始 PJSUA。此功能将检查所有的设置是否正确配置,如果他们没有将采用默认设置,或者如果它是无法从丢失的设置中恢复则报告错误状态。大
18、多数设置都可以在运行时改变。例如,应用程序可以在运行时添加,修改,或删除帐户,好友,或改变媒体设置。开始 PJSUA 的例子 C 代码示例代码:static pj_status_t app_run(void)pj_status_t status;/ 运行 pjsuastatus = pjsua_start();if (status != PJ_SUCCESS) pjsua_destroy();pjsua_perror(THIS_FILE, Error starting pjsua, status); return status;/ 循环执行应用程序while (1) char choice10
19、;printf(Select menu: ); fgets(choice, sizeof(choice), stdin);.Define Documentation#define PJSUA_INVALID_ID (-1)无效 ID#define PJSUA_DEFAULT_USE_SRTP PJMEDIA_SRTP_DISABLED最多代理账户的数目,SRTP 模式下的默认值。有效值:PJMEDIA_SRTP_DISABLED,PJMEDIA_SRTP_OPTIONAL,and PJMEDIA_SRTP_MANDATORY. #define PJSUA_DEFAULT_SRTP_SECURE
20、_SIGNALING 1SRTP 安全信令要求的默认值。有效值为:0:SRTP 的不需要安全信号;1:SRTP需要安全传输如 TLS;2:SRTP 需要安全的终端到终端传输(SIPS)#define PJSUA_ADD_ICE_TAGS 1如果在配置中 ICE 使能,控制 PJSUA-LIB 是否应该添加 ICE 媒体功能的标签参数( ;+sip.ice ) 到联系首部,默认: 1#define PJSUA_ACQUIRE_CALL_TIMEOUT 2000在一次特定呼叫中获取互斥锁的超时值默认: 2000 ms#define pjsip_cred_dup pjsip_cred_info_du
21、p它的实现已经被转移至 sip_auth.hTypedef Documentation typedef int pjsua_call_id 呼叫标识typedef int pjsua_acc_id账户标识typedef int pjsua_buddy_id好友标识typedef int pjsua_player_id文件的播放器标识typedef int pjsua_recorder_id文件记录标识typedef int pjsua_conf_port_id会议端口标识typedef void(* pj_stun_resolve_cb)(const pj_stun_resolve_resul
22、t *result)定义的回调类型用于 pjsua_resolve_stun_servers().Enumeration Type Documentationenum pjsua_create_media_transport_flag 此枚举指定自定义媒体传输的选项Enumerator:PJSUA_MED_TP_CLOSE_MEMBER此 标 志 表 示 当pjmedia_transport_close()被调用时,媒体传输层必须关闭其“成员”或“子” 传输层。如果这个标志没有被指定,那么媒体传输层不能调用它的成员传输层的 pjmedia_transport_close()函数。enum pj
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PJSUA 开发 文档 中文版

限制150内