如何在 android 设备上使用 pjsip G.729 编解码的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 android 设备上使用 pjsip G.729 编解码的功能相关的知识,希望对你有一定的参考价值。

 第一步是生成 pjsip 为 android (步骤为 Ubuntu Linux) 的源代码:

  1.设置 ANDROID_NDK_ROOT 环境变量设置为您 NDK 根文件夹。
  2.转到 pjsip 2.x 文件夹并创建 pjlib/include/pj/config_site.h 包括 config_site_sample.h ( #include <pj/config_site_sample.h> )
  3.运行./configure-android
  4.运行make clean && make depend && make
  之后这些步骤,将有几个静态库中的几个文件夹。建议将它们分组相同的文件夹 (最好在您的项目中) 中的:

  mkdir <your_project_path>/pjsip_libs
  find . -name *.a | xargs -I % cp % <your_project_path>/pjsip_libs/
  一旦自己的所有库,您需要将这些库添加到您的项目 Android.mk 文件,这是由包括一个新的模块节每个图书馆。此模块部分应该是一样的东西:

  include $(CLEAR_VARS)
  LOCAL_MODULE := pjsua-arm-unknown-linux-androideabi
  LOCAL_SRC_FILES := $(MY_PJLIB_PATH)/libpjsua-arm-unknown-linux-androideabi.a
  include $(PREBUILT_STATIC_LIBRARY)
  ,其实是一节中构建您的 JNI 项目的源代码,所有模块都添加到您的静态库的引用:

  LOCAL_STATIC_LIBRARIES := pjsua-arm-unknown-linux-androideabi ...
  这将包括 pjsip 的引用加入您的 JNI 库。现在,您需要配置 pjsip UA 实例。

  有一个关于 init 和开始的解释 pjsip 的 UA (pjsua) 在 pjsip/include/pjsua-lib/pjsua.h 但要遵循的主要步骤是:

  1.创建一个具有 UA 实例pjsua_create
  2.创建一个工作线程与pj_thread_create
  3.UA 实例的设置的默认配置:

  pjsua_config cfg 桩 ;pjsua_logging_config log_cfg ;pjsua_media_config media_cfg ;

  pj_cli_cfg_default(&app_config.cli_cfg.cfg) ;pjsua_logging_config_default(&log_cfg) ;pjsua_media_config_default(&media_cfg) ;

  4.初始化堆栈与pjsua_init

  5.启动与堆栈pjsua_start
  从这里,有充足的配置选项 (日志、 媒体、 交通工具等)

  您可以找到基本 PJSIP 教程在这里,和里面 pjsip 的源的根路径,有一个基本 (但不够完整,基本的 SIP 使用情况) 在:pjsip-apps/src/samples/simple_pjsua.c

  编辑:在生成时在 pjsip 应用程序的 android 项目,可以面临一个问题,因为 pjsua app 不生成默认情况下,对一般生成 (更具体地说,pjsua: 目标不包括所有上: 在 pjsip-应用程序/生成/生成文件的目标)。若要修复这只是转到 pjsip-应用程序/创建和运行:

  使 pjsua

  这将创建在正确的对象文件: pjsip-apps/build/output/pjsua-arm-unknown-linux-androideabi/ (需要构建 android 样本时)。

  一旦所有相应的对象文件,您可以在 pjsip-应用程序/src/pjsua/android 系统再次运行 ndk 生成
参考技术A 首先,了解Android原生开发工具包(NDK)的动机之一是得以利用开源项目,大多数项目都是用C语言编写的。完成本教程后,您将了解到如何创建Java本地接口(JNI)库,它使用C语言编写,使用原生开发工具包(NDK)进行编译,并将该库包含到了使用Java语言编写的Android应用程序中。应用程序演示了如何根据原始图像数据执行基本的图像处理操作。您还将学习如何扩展Eclipse构建环境以将NDK项目集成到AndroidSDK项目文件中。以此为基础,您可以更好地将现有开源代码移植到Android平台。本回答被提问者采纳 参考技术B 怎么回事啊,这么长时间竟然没有人关注。

如何在我的 iOS 项目中为模拟器和设备构建和集成 pjsip 2.5.5?

【中文标题】如何在我的 iOS 项目中为模拟器和设备构建和集成 pjsip 2.5.5?【英文标题】:How to build and integrate pjsip 2.5.5 for both simulator and device in my iOS project? 【发布时间】:2016-08-08 17:46:09 【问题描述】:

如何在我的项目中为 sinulator 和 device 构建和集成 pjsip 2.5.5?

我收到错误:

ld:未找到架构 arm64 的符号 架构 armv7 的未定义符号:

【问题讨论】:

@rmaddy 谢谢兄弟 【参考方案1】:

为了为所有设备和模拟器实现 pjsip,应该为每个架构编译它,并且应该使用 -lipo 命令组合所有库。请找到这个链接。它可能会帮助你。

Compile for all architecture seperately

Combine library for all architecture

【讨论】:

我想为 armv7、armv7s、arm64、i386 编译,也专门为 x86_64 等编译,请你提供代码。我已经为 armv7、armv7s、arm64、i386 构建,但无法为 x86_64 构建。感谢您的宝贵时间。 尝试使用以下命令进行编译: (1) export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer (2)ARCH="-arch i386" CFLAGS ="-O2 -m32 -mios-simulator-version-min=9.2" LDFLAGS="-O2 -m32 -mios-simulator-version-min=9.2" ./configure-iphone (3) make dep && make clean && make .如果您仍然收到相同的错误,请清理并重试。注意:确保您选择的 xcode 路径与 DEVPATH 相同。检查选定的 xcode 路径 xcode-select -p 切换 xcode 路径 sudo xcode-select -switch /Applications/Xcode.app/Contents/Develo 兄弟我需要为 x86_64 架构编译它,我知道上面这些事情,当你得到答案时编辑你的答案,我会检查你的答案。每个问题都有新的解决方案,是的,总是有回报。 :) 如果将来需要有关 pjsip 的帮助,请随时提出,我们是印度人,随时准备提供帮助。 尝试使用以下命令编译: (1) export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms‌​/iPhoneSimulator.pla‌​tform/Developer (2)ARCH="-arch x86_64" CFLAGS="-O2 -m32 -mios-simulator-version-min=9.2" LDFLAGS="-O2 -m32 -mios-simulator-version-min=9.2" ./configure-iphone (3) make dep && make .如果问题再次出现,请写下您正在编译的 pjsip 版本。

以上是关于如何在 android 设备上使用 pjsip G.729 编解码的功能的主要内容,如果未能解决你的问题,请参考以下文章

Pjsip 在多线程中调用它的函数时在 android 上崩溃

使用pjsip传输已经编码的视频,源码在github

你如何为设备和模拟器编译 PJSip iPhone 以在 iOS 3 和 iOS 4 上使用虹吸管?

VoIP 呼叫在不同的网络中不起作用(使用 PJSIP 和 Kamailio 服务器)

如何在我的 iOS 项目中为模拟器和设备构建和集成 pjsip 2.5.5?

如何构建和使用PJSIP用于不同于armeabi的架构?