您的位置:首页 > 移动开发 > Android开发

移植live555到android上

2013-09-07 19:30 441 查看
参考文章http://blog.csdn.net/baby313/article/details/7289489

下载了截止目前最新版本live.2013.08.31.tar.gz,在NDK版本是ndkr5。按照上面的文章写的Android.mk结果编译不通过,先是遇到这个错误:

E:/develop/android/project/live555lib/jni/live/liveMedia/our_md5hl.c:14:23: error: NetCommon.h: No such file or directory
/cygdrive/e/Develop/Android/ndk/build/core/build-binary.mk:197: recipe for target `/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/objs/live555/./live/liveMedia/our_md5hl.o' failed
make: *** [/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/objs/live555/./live/liveMedia/our_md5hl.o] Error 1


后来修改了Android.mk里的LOCAL_C_INCLUDES段,把./live改成$(LOCAL_PATH)/live后解决。

再次编译,遇到下面的错误

make: *** 没有规则可以创建“/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/objs/live555/./live/liveMedia/MP3HTTPSource.o”需要的目标“/cygdrive/e/develop/android/project/live555lib/jni/./live/liveMedia/MP3HTTPSource.cpp”。 停止。
发现源代码里不存在MP3HTTPSource.cpp文件,于是在Android.mk的LOCAL_SRC_FILES删除这个文件所在行

再次编译,遇到了下面的错误

E:/develop/android/project/live555lib/obj/local/armeabi/objs/live555/live/liveMedia/RTSPServer.o: In function `RTSPServerWithREGISTERProxying::implementCmd_REGISTER(char const*, char const*, int)':
E:/develop/android/project/live555lib/jni/live/liveMedia/RTSPServer.cpp:2218: undefined reference to `ProxyServerMediaSession::createNew(UsageEnvironment&, RTSPServer*, char const*, char const*, char const*, char const*, unsigned short, int, int)'
collect2: ld returned 1 exit status
/cygdrive/e/Develop/Android/ndk/build/core/build-binary.mk:266: recipe for target `/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/liblive555.so' failed
make: *** [/cygdrive/e/develop/android/project/live555lib/obj/local/armeabi/liblive555.so] Error 1


检查发现是没有包含ProxyServerMediaSession.cpp代码的编译,把这个文件加到最后一行,再次编译终于通过了,记录一下,顺便附上我的Android.mk

#一般都在本地路径,所以这里也是固定写法
LOCAL_PATH := $(call my-dir)

#都以此开始
include $(CLEAR_VARS)

LOCAL_MODULE := live555

LOCAL_SRC_FILES :=\
./live/groupsock/GroupEId.cpp \
./live/groupsock/IOHandlers.cpp \
./live/groupsock/NetInterface.cpp \
./live/groupsock/NetAddress.cpp \
./live/groupsock/GroupsockHelper.cpp \
./live/groupsock/Groupsock.cpp \
./live/groupsock/inet.c \
./live/BasicUsageEnvironment/DelayQueue.cpp \
./live/BasicUsageEnvironment/BasicHashTable.cpp \
./live/BasicUsageEnvironment/BasicUsageEnvironment.cpp \
./live/BasicUsageEnvironment/BasicUsageEnvironment0.cpp \
./live/BasicUsageEnvironment/BasicTaskScheduler.cpp \
./live/BasicUsageEnvironment/BasicTaskScheduler0.cpp \
./live/UsageEnvironment/HashTable.cpp \
./live/UsageEnvironment/strDup.cpp \
./live/UsageEnvironment/UsageEnvironment.cpp \
./live/liveMedia/MP3Internals.cpp \
./live/liveMedia/StreamReplicator.cpp \
./live/liveMedia/MPEG4GenericRTPSource.cpp \
./live/liveMedia/BitVector.cpp \
./live/liveMedia/MatroskaFileParser.cpp \
./live/liveMedia/ADTSAudioFileServerMediaSubsession.cpp \
./live/liveMedia/H264VideoRTPSink.cpp \
./live/liveMedia/MP3StreamState.cpp \
./live/liveMedia/RTSPServerSupportingHTTPStreaming.cpp \
./live/liveMedia/MP3AudioMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/InputFile.cpp \
./live/liveMedia/MPEGVideoStreamParser.cpp \
./live/liveMedia/AMRAudioFileSource.cpp \
./live/liveMedia/Locale.cpp \
./live/liveMedia/T140TextRTPSink.cpp \
./live/liveMedia/MediaSink.cpp \
./live/liveMedia/QuickTimeFileSink.cpp \
./live/liveMedia/RTPSink.cpp \
./live/liveMedia/VorbisAudioRTPSink.cpp \
./live/liveMedia/AMRAudioFileSink.cpp \
./live/liveMedia/MP3ADUTranscoder.cpp \
./live/liveMedia/VorbisAudioMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/H264VideoFileServerMediaSubsession.cpp \
./live/liveMedia/H263plusVideoRTPSource.cpp \
./live/liveMedia/RTSPClient.cpp \
./live/liveMedia/DVVideoRTPSource.cpp \
./live/liveMedia/H264VideoStreamFramer.cpp \
./live/liveMedia/DVVideoStreamFramer.cpp \
./live/liveMedia/MultiFramedRTPSink.cpp \
./live/liveMedia/BasicUDPSink.cpp \
./live/liveMedia/Base64.cpp \
./live/liveMedia/H261VideoRTPSource.cpp \
./live/liveMedia/MP3InternalsHuffman.cpp \
./live/liveMedia/MPEG2TransportStreamMultiplexor.cpp \
./live/liveMedia/MP3AudioFileServerMediaSubsession.cpp \
./live/liveMedia/MPEG1or2AudioRTPSource.cpp \
./live/liveMedia/H263plusVideoFileServerMediaSubsession.cpp \
./live/liveMedia/MP3Transcoder.cpp \
./live/liveMedia/H263plusVideoStreamParser.cpp \
./live/liveMedia/AudioInputDevice.cpp \
./live/liveMedia/MP3FileSource.cpp \
./live/liveMedia/MPEG4LATMAudioRTPSource.cpp \
./live/liveMedia/MPEG2TransportStreamFromPESSource.cpp \
./live/liveMedia/AACAudioMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/WAVAudioFileServerMediaSubsession.cpp \
./live/liveMedia/MP3ADURTPSource.cpp \
./live/liveMedia/FileSink.cpp \
./live/liveMedia/MPEG1or2DemuxedServerMediaSubsession.cpp \
./live/liveMedia/MP3InternalsHuffmanTable.cpp \
./live/liveMedia/TCPStreamSink.cpp \
./live/liveMedia/MediaSource.cpp \
./live/liveMedia/MPEG2TransportStreamFramer.cpp \
./live/liveMedia/JPEGVideoRTPSink.cpp \
./live/liveMedia/JPEGVideoSource.cpp \
./live/liveMedia/AC3AudioFileServerMediaSubsession.cpp \
./live/liveMedia/AMRAudioRTPSink.cpp \
./live/liveMedia/MPEG4VideoFileServerMediaSubsession.cpp \
./live/liveMedia/AMRAudioFileServerMediaSubsession.cpp \
./live/liveMedia/H264VideoMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/MPEG2IndexFromTransportStream.cpp \
./live/liveMedia/MPEG1or2FileServerDemux.cpp \
./live/liveMedia/GSMAudioRTPSink.cpp \
./live/liveMedia/MPEG1or2VideoStreamFramer.cpp \
./live/liveMedia/AMRAudioRTPSource.cpp \
./live/liveMedia/EBMLNumber.cpp \
./live/liveMedia/MP3ADUinterleaving.cpp \
./live/liveMedia/SimpleRTPSink.cpp \
./live/liveMedia/MPEG1or2VideoRTPSink.cpp \
./live/liveMedia/MPEG2TransportStreamTrickModeFilter.cpp \
./live/liveMedia/AC3AudioRTPSource.cpp \
./live/liveMedia/MultiFramedRTPSource.cpp \
./live/liveMedia/ServerMediaSession.cpp \
./live/liveMedia/JPEGVideoRTPSource.cpp \
./live/liveMedia/MP3ADU.cpp \
./live/liveMedia/FileServerMediaSubsession.cpp \
./live/liveMedia/DVVideoFileServerMediaSubsession.cpp \
./live/liveMedia/DarwinInjector.cpp \
./live/liveMedia/OnDemandServerMediaSubsession.cpp \
./live/liveMedia/H263plusVideoRTPSink.cpp \
./live/liveMedia/TextRTPSink.cpp \
./live/liveMedia/MPEG1or2VideoStreamDiscreteFramer.cpp \
./live/liveMedia/MediaSession.cpp \
./live/liveMedia/AC3AudioStreamFramer.cpp \
./live/liveMedia/QuickTimeGenericRTPSource.cpp \
./live/liveMedia/SimpleRTPSource.cpp \
./live/liveMedia/FramedFileSource.cpp \
./live/liveMedia/T140TextMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/PassiveServerMediaSubsession.cpp \
./live/liveMedia/ByteStreamMemoryBufferSource.cpp \
./live/liveMedia/RTCP.cpp \
./live/liveMedia/MP3ADURTPSink.cpp \
./live/liveMedia/ADTSAudioFileSource.cpp \
./live/liveMedia/MPEG1or2VideoRTPSource.cpp \
./live/liveMedia/MPEG1or2VideoFileServerMediaSubsession.cpp \
./live/liveMedia/MPEG4ESVideoRTPSink.cpp \
./live/liveMedia/RTPSource.cpp \
./live/liveMedia/H264VideoStreamDiscreteFramer.cpp \
./live/liveMedia/AVIFileSink.cpp \
./live/liveMedia/StreamParser.cpp \
./live/liveMedia/MPEG2TransportStreamFromESS
4000
ource.cpp \
./live/liveMedia/VP8VideoRTPSink.cpp \
./live/liveMedia/FramedFilter.cpp \
./live/liveMedia/VideoRTPSink.cpp \
./live/liveMedia/MPEG4VideoStreamDiscreteFramer.cpp \
./live/liveMedia/QCELPAudioRTPSource.cpp \
./live/liveMedia/MPEG4VideoStreamFramer.cpp \
./live/liveMedia/Media.cpp \
./live/liveMedia/ByteStreamMultiFileSource.cpp \
./live/liveMedia/MPEG2TransportUDPServerMediaSubsession.cpp \
./live/liveMedia/H263plusVideoStreamFramer.cpp \
./live/liveMedia/VorbisAudioRTPSource.cpp \
./live/liveMedia/RTSPCommon.cpp \
./live/liveMedia/FramedSource.cpp \
./live/liveMedia/MatroskaDemuxedTrack.cpp \
./live/liveMedia/MPEG1or2AudioStreamFramer.cpp \
./live/liveMedia/VP8VideoMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/MPEG1or2Demux.cpp \
./live/liveMedia/AudioRTPSink.cpp \
./live/liveMedia/DeviceSource.cpp \
./live/liveMedia/MPEG1or2AudioRTPSink.cpp \
./live/liveMedia/ByteStreamFileSource.cpp \
./live/liveMedia/WAVAudioFileSource.cpp \
./live/liveMedia/uLawAudioFilter.cpp \
./live/liveMedia/RTSPServer.cpp \
./live/liveMedia/VP8VideoRTPSource.cpp \
./live/liveMedia/H264VideoRTPSource.cpp \
./live/liveMedia/MatroskaFileServerDemux.cpp \
./live/liveMedia/MPEG4LATMAudioRTPSink.cpp \
./live/liveMedia/MPEG2TransportStreamIndexFile.cpp \
./live/liveMedia/SIPClient.cpp \
./live/liveMedia/BasicUDPSource.cpp \
./live/liveMedia/AC3AudioMatroskaFileServerMediaSubsession.cpp \
./live/liveMedia/H264VideoFileSink.cpp \
./live/liveMedia/MPEG2TransportFileServerMediaSubsession.cpp \
./live/liveMedia/DigestAuthentication.cpp \
./live/liveMedia/MPEG4ESVideoRTPSource.cpp \
./live/liveMedia/MatroskaFile.cpp \
./live/liveMedia/MP3ADUdescriptor.cpp \
./live/liveMedia/AMRAudioSource.cpp \
./live/liveMedia/MPEG4GenericRTPSink.cpp \
./live/liveMedia/MPEGVideoStreamFramer.cpp \
./live/liveMedia/AC3AudioRTPSink.cpp \
./live/liveMedia/DVVideoRTPSink.cpp \
./live/liveMedia/OutputFile.cpp \
./live/liveMedia/MPEG1or2DemuxedElementaryStream.cpp \
./live/liveMedia/RTPInterface.cpp \
./live/liveMedia/our_md5hl.c \
./live/liveMedia/our_md5.c \
./live/liveMedia/rtcp_from_spec.c \
./live/liveMedia/ProxyServerMediaSession.cpp

#./live改成$(LOCAL_PATH)/live编译通过
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/live/BasicUsageEnvironment/include \
$(LOCAL_PATH)/live/liveMedia/include \
$(LOCAL_PATH)/live/BasicUsageEnvironment/include \
$(LOCAL_PATH)/live/groupsock/include \
$(LOCAL_PATH)/live/UsageEnvironment/include

LOCAL_CPPFLAGS += -fexceptions -DXLOCALE_NOT_USED=1 -DNULL=0 -DNO_SSTREAM=1 -UIP_ADD_SOURCE_MEMBERSHIP

#都以此结束,编译为动态链接库
include $(BUILD_SHARED_LIBRARY)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 移植 live555 ndk