Android 上如何移植live555生成库文件

                                                                       基于移动平台的多媒体框架——移植Live555到Android上
 live555是一个处理流媒体传输对c++库,再Mplayer与vlc中都有用到。我们计划将其加入到自己编写对Android上的播放器中作为流媒体模块,首先就需要将

这个库移植到Android上。
 方案I:
 最近在做Android上的多媒体开发,需要在Android上移植live555,因为我算是Android上多媒体开发的新手,于是在网上找各种资料,大致的做法都是:
 
1. 首先在官网下载live555对源码并解压。
 2. 新建一个Android工程,将源码文件放到一个该工程的jni目录下,如:jni/live。
 3. 新建jni/Android.mk文件作为Makefile。将需要编译对源文件加入到LOCAL_SRC_FILES变量,将需要引用对头文件加入到LOCAL_C_INCLUDES,编译过程中

会提示需要参数:-fexceptions,于是加入参数LOCAL_CPPFLAGS += -fexceptions。
 
内容如下:
 
4. 新建jni/Application.mk文件。由于live555需要引用stl,所以加入:
 APP_STL := gnustl_shared
 


5. 运行ndk-build就可以得到live555库
 

 

补充:我已在Android上移植过ffmpeg,并且写了简单的测试程序,可以正常的调用生成的ffmpeg库文件!!!
 
因移植过程中还是出现了一些错误,我顺便把移植的过程写的详细点,便于他人参考。
 
1. 下载了live555源码,日期是12/04/04,用的ndk版本是r5b。
 
2.预备工作,先用标准的方法make一下,确定你的源码是可以编译过的。
 
01../genMakefiles linux 
02.make 

 

[plain] view plaincopy
01../genMakefiles linux 
02.make 
马上就看到成功的结果了,这时不要急得移植。移植是交叉编译了,咱们先不用交叉编译,用gcc编译看看会不会。

了解live555的基本结构之后就可以执行:
 
01.g++ BasicUsageEnvironment/*.cpp liveMedia/*.cpp mediaServer/*.cpp UsageEnvironment/*.cpp ./groupsock/*cpp -

IBasicUsageEnvironment/include -IliveMedia/include -IBasicUsageEnvironment/include -Igroupsock/include/ -IUsageEnvironment/include -

DSOCKLEN_T=socklen_t -shared -o live555.so 

 

[plain] view plaincopy
01.g++ BasicUsageEnvironment/*.cpp liveMedia/*.cpp mediaServer/*.cpp UsageEnvironment/*.cpp ./groupsock/*cpp -

IBasicUsageEnvironment/include -IliveMedia/include -IBasicUsageEnvironment/include -Igroupsock/include/ -IUsageEnvironment/include -

DSOCKLEN_T=socklen_t -shared -o live555.so 
这样在本地就生成一个so了。


3. 跟本地一样,如果你了解了ndk的用法,写个简单的mk文件就可以移植了。建工程什么的在上面说了,我就把mk文件贴出来给大家参考一下好了。为了省事

,我就建了一个Android.mk文件。写的过程就是碰到什么问题,就改改加加什么参数。(这次连Application.mk都没有加就过了。。。)
 
参考的Android.mk文档是:http://blog.csdn.net/baby313/article/details/7289489
 
不幸的是,我生成live555的时候出错了:
 
Compile++ thumb  : live555 <= GroupEId.cpp
 /home/hu/android-ndk-r7/samples/vLive//jni/./live/groupsock/GroupEId.cpp:20:23: error: GroupEId.hh: No such file or directory
 /home/hu/android-ndk-r7/samples/vLive//jni/./live/groupsock/GroupEId.cpp:21:21: error: strDup.hh: No such file or directory
 /home/hu/android-ndk-r7/samples/vLive//jni/./live/groupsock/GroupEId.cpp:26: error: 'Scope' has not been declared
 
。。。
 
于是上网查资料,怀疑是脚本写错了(现在发现,应该是live555版本的差异引起的),于是接着上网查资料
 
在苦苦查询中找到了,一个方法:
 
方法很简单,在live555源码中写一个Android.mk:


 

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
       BasicUsageEnvironment/BasicHashTable.cpp \
       BasicUsageEnvironment/BasicTaskScheduler.cpp \
       BasicUsageEnvironment/BasicTaskScheduler0.cpp \
       BasicUsageEnvironment/BasicUsageEnvironment.cpp \
       BasicUsageEnvironment/BasicUsageEnvironment0.cpp \
       BasicUsageEnvironment/DelayQueue.cpp \
       UsageEnvironment/HashTable.cpp \
       UsageEnvironment/UsageEnvironment.cpp \
       UsageEnvironment/strDup.cpp \
       groupsock/GroupsockHelper.cpp \
        groupsock/GroupEId.cpp \
        groupsock/inet.c \
        groupsock/Groupsock.cpp \
        groupsock/NetInterface.cpp \
        groupsock/NetAddress.cpp \
        groupsock/IOHandlers.cpp \
        liveMedia/our_md5.c \
        liveMedia/our_md5hl.c \
        liveMedia/rtcp_from_spec.c \
        liveMedia/AC3AudioRTPSink.cpp \
        liveMedia/AC3AudioRTPSource.cpp \
        liveMedia/AC3AudioStreamFramer.cpp \
        liveMedia/ADTSAudioFileServerMediaSubsession.cpp \
        liveMedia/ADTSAudioFileSource.cpp \
       

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值