gpt4 book ai didi

android - 如何在 Android 设备上使用 pjsip 以获得 G.729 编解码器功能

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:25 24 4
gpt4 key购买 nike

我想在我的 android 应用程序上使用 G.729 音频编解码器。我对此做了很多研究,并了解到 pjsip 是最有前途的解决方案。但我对这一切都不太了解。有人可以为我提供在现有 android 应用程序中使用 pjsip 的完整步骤吗?我如何通过 pjsip 包含对 G729 编解码器的支持。

我们将不胜感激。

编辑:

这是我的 android.mk 文件。我想知道,我这样做对吗?以及如何在我的 Java 代码中使用那些 C 函数???

include $(CLEAR_VARS)
LOCAL_MODULE := pjsua-arm-unknown-linux-androideabi
LOCAL_SRC_FILES := $(MY_PJLIB_PATH)/libpjsua-arm-unknown-linux-androideabi.a

PJSIP_LIBS := $(addprefix pjsip_libs/, \
libg7221codec-arm-unknown-linux-androideabi.a \
libg7221codec-i686-apple-darwin9.a \
libgsmcodec-arm-unknown-linux-androideabi.a \
libgsmcodec-i686-apple-darwin9.a \
libilbccodec-arm-unknown-linux-androideabi.a \
libmilenage-arm-unknown-linux-androideabi.a \
libmilenage-i686-apple-darwin9.a \
libpj-arm-unknown-linux-androideabi.a \
libpj-i686-apple-darwin9.a \
libpjlib-util-arm-unknown-linux-androideabi.a \
libpjlib-util-i686-apple-darwin9.a \
libpjmedia-audiodev-i686-apple-darwin9.a \
libpjmedia-codec-i686-apple-darwin9.a \
libpjmedia-i686-apple-darwin9.a \
libpjmedia-videodev-i686-apple-darwin9.a \
libpjnath-arm-unknown-linux-androideabi.a \
libpjnath-i686-apple-darwin9.a \
libpjsdp-i686-apple-darwin9.a \
libpjsip-i686-apple-darwin9.a \
libpjsip-simple-i686-apple-darwin9.a \
libpjsip-ua-i686-apple-darwin9.a \
libpjsua-i686-apple-darwin9.a \
libportaudio-i686-apple-darwin9.a \
libresample-arm-unknown-linux-androideabi.a \
libresample-i686-apple-darwin9.a \
libspeex-arm-unknown-linux-androideabi.a \
libsrtp-arm-unknown-linux-androideabi.a \
libsrtp-i686-apple-darwin9.a )

LOCAL_STATIC_LIBRARIES := $(PJSIP_LIBS)
include $(PREBUILT_STATIC_LIBRARY)

最佳答案

第一步是构建 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和start的解释pjsip pjsip/include/pjsua-lib/pjsua.h 中的 UA (pjsua)但要遵循的主要步骤是:

  1. 使用 pjsua_create 创建一个 UA 实例
  2. 使用 pj_thread_create 创建一个工作线程
  3. 为 UA 实例设置默认配置:

    pjsua_config 配置文件;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 教程 here并且,在 pjsip 的源根路径中,您有一个基本的(但对于基本的 SIP 使用来说已经足够完整)位于:pjsip-apps/src/samples/simple_pjsua.c

编辑: 在 pjsip-apps 中构建 android 项目时,您可能会遇到一个问题,因为 pjsua-app 在一般构建中默认不会生成(更具体地说,pjsua: target is not included on全部:目标是 pjsip-apps/build/Makefile)。要解决这个问题,只需转到 pjsip-apps/build 并运行:

制作pjsua

这将在以下位置创建适当的目标文件:pjsip-apps/build/output/pjsua-arm-unknown-linux-androideabi/(构建 android 示例时需要)。

一旦你有所有相应的目标文件,你可以在 pjsip-apps/src/pjsua/android 再次运行 ndk-build

关于android - 如何在 Android 设备上使用 pjsip 以获得 G.729 编解码器功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20193956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com