整合第三方媒体栈到PJSIP2.x的PJSUA-LIB

1 篇文章 0 订阅

转自:http://blog.csdn.net/tyler_xiang/article/details/61209815

对PJSUA-LIB中媒体定制处理在应用中有实际意义,例如:在安卓5.x系统下,硬件编解码、视频预览等功能已被安卓封装的极其方便易用(被封得也很死),且硬件解码设置时同时设定渲染设备的surfaceview,解码后会自动渲染。视频效果很好,且不易受界面线程影响。视频预览、硬件编解码在安卓方实现,编码后的h264媒体流,在定制后的PJSUA-LIB中RTP封包后,调用媒体传输端口的send_rtp功能,发送rtp包到SDP协商对远端UA;在PJSUA-LIB定制后的视频媒体处理中,对媒体传输端口收到RTP的回调做处理:从抖动缓冲区收到RTP包后,不做解码处理,将多个RTP包中相同时间戳的h264数据收齐后,将h264数据传到安卓端做硬件解码、渲染处理。


  PJSUA-LIB是pjproject2.6中提供的高级别API,下图展示了PJSUA-LIB下左侧媒体处理部分和右侧SIP处理部分,及最上端应用程序pjsua对PJSUA-LIB的调用。应用程序调用PJSUA-LIB库中的API方便地实现:注册、呼叫、事件处理、媒体处理等功能。在方便的同时,也会受到PJSUA-LIB实现的体系制约。



下面的内容中前部分是从pjsip( https://trac.pjsip.org/repos/wiki/3rd_Party_Media)提供的英文文档翻译过来的,可以按下面的说明查看与媒体部分的相关函数,并从PJSUA-LIB的相关C文件中拷贝同名函数内部代码到alt_pjsua_aud.c和alt_pjsua_vid.c中。或者在工程文件中去除这两个文件中的一个文件,同时将pjsip/src/pjsua-lib源代码中pjsua_aud.c与pjsua_vid.c中的包裹全部代码的下列宏定义注释,这样可以保留PJSUA-LIB中的原音频/视频的功能。

  #if defined(PJSUA_MEDIA_HAS_PJMEDIA) && PJSUA_MEDIA_HAS_PJMEDIA!= 0

  #endif /* PJSUA_MEDIA_HAS_PJMEDIA */

 

  从PJSIP2.0开始,加入了将第三方媒体整合到PJSUA-LIB的支持。按下列步骤,应用程序可以使用第三方媒体栈调用音频、视频,同时使用PJSUA_LIB中提供的完整SIP、NAT和安全(包括SRTP)功能。

下列PJMEDIA中的功能已经在PJSUA-LIB中被屏蔽 (除非由第三方媒体库提供等效实现):

  • 声卡设备管理
  • 回音抑制
  • 编解码器
  • 抖动缓冲区
  • RTP和RTCP
  • WAV文件播放和录音
  • 会议桥
  • RFC 2833定义的DTMF
  • 等等,除了下面提到的功能

下列功能可以使用:

  • 完整SIP功能,包括SIP注册等等。
  • SDP和SDP协商
  • NAT穿越功能(包括ICE)
  • Security功能包括TLS和SRTP
  • 媒体端口

下面三个步骤用PJSUA-LIB整合第三方媒体库:

  1. 在文件pjlib/include/pj/config_site.h中添加:

   #definePJSUA_MEDIA_HAS_PJMEDIA    0

  从PJSUA-LIB库排除PJMEDIA具体实现,可以理解为:你会失去在PJSUA-LIB的所有媒体功能(这将在你的第三方媒体栈处理)。

  1. 同时从pjsip-apps/src/3rdparty_media_sample/config_site.h复制建议设置到pjlib/include/pj/config_site.h . 这些设置主要用于从编译过程中排除不需要的媒体组件。
  2. 使用以下命令构建库

    $ make lib

  而不是make或make all。这是因为大多数样板程序由于在PJSUA-LIB中由于缺少媒体错误,将不能被构建建。命令 makelib仅构建单元测试需要的库。

  • 转到pjsip-apps/src/3rdparty_media_sample目录。此处样板程序展示了整合第三方媒体库的切入点。在alt_pjsua_xxx.c文件内的“TODO”处中填加媒体实现。
  • 运行 make命令构建应用,完成后,运行alt_pjsua,功能与pjsua相同。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值