免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2807 | 回复: 0
打印 上一主题 下一主题

android ndk 编译 g722编解码器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:44 |只看该作者 |倒序浏览
    需要在项目中使用一种适合视频会议和voip的音频编解码器。网上搜索发现,满足这种使用环境的音频编解码器,主要是ITU g7xx。其中 g723.1 编码之后生成的码流占用带宽是最小的,然而基本只适合语音环境,音质较差。而 g729 则比较适中,生成的码流占带宽比较低,音质也不错,是目前网络流媒体中比较合适的音频编码方式。
   在网上找了一下,发现了一个可以在 android ndk 环境中编译使用的g722编码器。该编解码器是 android 中的一个应用 sipdroid 中使用的。也是在android ndk 环境中,通过 jni向上层提供接口。现在就是要尝试着将该模块集成进我们的 native 环境中。具体步骤如下:
1、将sipdroid/jni 目录中的
   g722_jni.cpp 文件和 spandsp 子目录复制到我们自己项目的jni目录中。
2、修改我们自己项目jni目录中的 android.mk 文件,增加如下内容:
   LOCAL_C_INCLUDES += $(LOCAL_PATH)/spandsp/

   LOCAL_SRC_FILES += g722_jni.cpp \
                   spandsp/g722.c \
                   spandsp/vector_int.c

3、尝试编译
   1)、
   root@vmuser:/opt/ndk-r4/apps/jtmedia/project/jni# ../../../../ndk-build

   结果出错,有n多行出错提示,很多符号找不到。分析这些出错信息,发现其中有如下一条:

Compile++ thumb: jtmedia <= /opt/ndk-r4/apps/jtmedia/project/jni/g722_jni.cpp
In file included from /opt/ndk-r4/apps/jtmedia/project/jni/g722_jni.cpp:30:
/opt/ndk-r4/apps/jtmedia/project/jni/spandsp/spandsp.h:39:24: error: myinttypes.h: No such file or directory

   打开 jni/spandsp/spandsp.h 文件,看了一下,第39行的是:

#include "myinttypes.h"

   实际搜索了一下,myinttypes.h 文件是在 jni/spandsp/spandsp 目录中,而该目录并没有在头文件搜索路径中,所以才会出现该文件找不到的编译错误。
  
   2)、
   采用的方法,将上面的第39行修改为:

#include "spandsp/myinttypes.h"

   另外,可以尝试修改android.mk 文件,再增加如下内容:
   LOCAL_C_INCLUDES += $(LOCAL_PATH)/spandsp/spandsp/
   应该也能解决问题(这样,就不必对源码做修改了)。

   继续编译,上面 找不到头文件和一些标识符的编译错误已经没有了。但是提示:

   make: *** 没有规则可以创建“/opt/ndk-r4/apps/jtmedia/project/bin/ndk/local/armeabi/libjtmedia.so”需要的目标“/opt/ndk-r4/apps/jtmedia/project/bin/ndk/local/armeabi/libavcodec.a”。 停止。

    发现,是因为找不到连接时所需要用到的静态库。采用 make app = xxxx 的方式编译,和采用 ndk-build 的方式编译,需要的中间文件所在的位置是不一样的。将我们编译所需的库复制到上面出错提示中给出的目录中。
   再次编译,通过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP