ast*_*ter 3 android voip sip codec pjsip
我想G.729在我的Android应用程序上使用音频编解码器.我对此做了很多研究,并且开始知道这pjsip是最有希望的解决方案.但我对这一切并不太了解.有人可以为我提供pjsip在现有Android应用程序中使用的完整步骤,以及如何通过包含对G729编解码器的支持pjsip.
任何帮助将不胜感激.
编辑:
这是我的android.mk档案.我想知道,我做对了吗?以及如何C在我的java代码中使用这些函数???
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)
Run Code Online (Sandbox Code Playgroud)
第一步是pjsip为Android 构建源代码(Ubuntu Linux的步骤):
ANDROID_NDK_ROOT环境变量设置为NDK的根文件夹.pjlib/include/pj/config_site.h包含config_site_sample.h(#include <pj/config_site_sample.h>)./configure-androidmake clean && make depend && make完成这些步骤后,您将在多个文件夹中拥有多个静态库.我建议将它们分组到同一个文件夹中(在项目中更好):
mkdir <your_project_path>/pjsip_libs
find . -name *.a | xargs -I % cp % <your_project_path>/pjsip_libs/
Run Code Online (Sandbox Code Playgroud)
一旦有了所有库,就需要将这些库添加到项目的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)
Run Code Online (Sandbox Code Playgroud)
并且,在您实际构建JNI项目源代码的部分中,将所有模块添加到静态库引用中:
LOCAL_STATIC_LIBRARIES := pjsua-arm-unknown-linux-androideabi ...
Run Code Online (Sandbox Code Playgroud)
这将包括pjsip对您的JNI库的引用.现在,您需要配置pjsipUA实例.
你有关于init和start pjsip的UA(pjsua)的解释,pjsip/include/pjsua-lib/pjsua.h但主要的步骤是:
pjsua_createpj_thread_create设置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);
初始化堆栈 pjsua_init
pjsua_start从这里,您有很多配置选项(日志,媒体,传输等)
你可以在这里找到一个基本的PJSIP教程,在pjsip 的源根路径中,你有一个基本的(但对于基本的SIP使用来说足够完整):pjsip-apps/src/samples/simple_pjsua.c
编辑:在pjsip-apps中构建android项目时,你可能会面临一个问题,因为普通版本默认情况下不会生成pjsua-app(更具体地说,pjsua:target不包含在所有:target at 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
| 归档时间: |
|
| 查看次数: |
6205 次 |
| 最近记录: |