【发布时间】:2013-11-22 11:31:19
【问题描述】:
【问题讨论】:
-
你在和
pjsip一起工作吗?
【问题讨论】:
pjsip一起工作吗?
如果您不打算使用 pjsip,那么您需要生成一个可以在您自己的项目中使用的共享库。为此,我建议您创建一个jni 文件夹并添加一个类似于以下内容的Android.mk 文件:
LOCAL_PATH := $(call my-dir)
### Glue for pjsip codec ###
include $(CLEAR_VARS)
LOCAL_MODULE := g729_codec
G729_PATH := $(LOCAL_PATH)/../sources
# g729
LOCAL_C_INCLUDES += $(G729_PATH)/include
G729_FILES := $(wildcard $(G729_PATH)/src/*.c)
LOCAL_SRC_FILES += $(G729_FILES:$(LOCAL_PATH)/%=%)
LOCAL_ALLOW_UNDEFIND_SYMBOLS := false
LOCAL_CFLAGS := -frtti -fexceptions
include $(BUILD_SHARED_LIBRARY)
这只是对android_toolchain/Android.mk 的修改。
您将在文件 sources/include/g729a.h 中找到正确管理此 g729 实现所需的所有功能,并在文件 pj_sources/pj_g729.c 中找到有关如何使用它们的一个很好的示例
另一方面,如果您打算使用 pjsip,您唯一应该做的就是将 CSipSimple 的实现注册为外部编解码器(Regis 已经完成了几乎所有工作),即在您的项目:
status = pjmedia_codec_g729_init(pjsua_var.med_endpt);
if (status != PJ_SUCCESS)
{
PJ_LOG(1,(THIS_FILE, "Error: Failed to init G729 codec"));
}
并使用android_toolchain/Android.mk 构建一个可以与您的解决方案链接的库。
【讨论】:
pjsip,我的建议只有在您已经配置并运行@987654331 后才有效@ UA(这将是一个需要新的完整部分/请求,甚至更多的主题)。那么,我了解您正在使用不同的 SIP 堆栈并且只想集成 G729,我错了吗?
下载 CSipSimpleCodecG729 来自 svn checkout http://csipsimple.googlecode.com/svn/trunk/ CSipSimple-trunk 并将其构建为库,然后将此库插入到 sipHome 项目中
您还必须在 Manifest 文件中编写此代码
<!--G729 codec -->
<receiver
android:name="com.csipsimple.plugins.codecs.ReceiverG729"
android:exported="false" >
<meta-data
android:name="lib_name"
android:value="libpj_g729_codec.so" />
<meta-data
android:name="init_factory"
android:value="pjmedia_codec_g729_init" />
<intent-filter>
<action android:name="com.csipsimple.codecs.action.REGISTER_CODEC" />
</intent-filter>
</receiver>
【讨论】:
.jar 文件作为库?
.jar 文件,将它们添加为库,更新了清单文件,但没有任何改变。如何在应用程序中添加/使用编解码器?