用NDK编译Live555 - 亲测有效

http://wendal.net/2014/04/29.html

针对 live555 2014.03.25和 live 2014.04.23 也就是当前最新咯.

准备工作

下载源码 http://www.live555.com/liveMedia/public/ 该地址经常被X,请问候非圆校长

解压到一个空文件夹, 并将目录名从live改成jni

建一个文件, 叫 Android.mk

文件内容在 https://gist.github.com/wendal/11399988

编译

在jni目录下执行

ndk-build

如无意外,在 libs/armeabi/ 生成一个so文件.



Android.mk


LOCAL_PATH := $(call my-dir)
 
include $(CLEAR_VARS)
 
# NDK 7d支持硬浮点的直接编译
#APP_ABI := armeabi-v7a-hard
 
LOCAL_MODULE := liblive555
 
LOCAL_ARM_MODE := arm
 
LOCAL_PRELINK_MODULE := false
 
LOCAL_CPPFLAGS := \
	-DNULL=0 -DSOCKLEN_T=socklen_t -DNO_SSTREAM -DBSD=1 -DNO_SSTREAM -fexceptions -DANDROID -DXLOCALE_NOT_USED
 
LOCAL_C_INCLUDES := \
	$(LOCAL_PATH) \
	$(LOCAL_PATH)/BasicUsageEnvironment/include \
	$(LOCAL_PATH)/BasicUsageEnvironment \
	$(LOCAL_PATH)/UsageEnvironment/include \
	$(LOCAL_PATH)/UsageEnvironment \
	$(LOCAL_PATH)/groupsock/include \
	$(LOCAL_PATH)/groupsock \
	$(LOCAL_PATH)/liveMedia/include \
	$(LOCAL_PATH)/liveMedia \
 
LOCAL_MODULE_TAGS := optional
 
LOCAL_SRC_FILES := \
groupsock/IOHandlers.cpp                                       \
groupsock/Groupsock.cpp                                        \
groupsock/NetAddress.cpp                                       \
groupsock/GroupsockHelper.cpp                                  \
groupsock/NetInterface.cpp                                     \
groupsock/GroupEId.cpp                                         \
groupsock/inet.c                                               \
liveMedia/rtcp_from_spec.c                                     \
liveMedia/MPEG4GenericRTPSource.cpp                            \
liveMedia/MatroskaFileServerMediaSubsession.cpp                \
liveMedia/DVVideoRTPSink.cpp                                   \
liveMedia/H265VideoFileServerMediaSubsession.cpp               \
liveMedia/DarwinInjector.cpp                                   \
liveMedia/OggFile.cpp                                          \
liveMedia/MP3Transcoder.cpp                                    \
liveMedia/VorbisAudioRTPSink.cpp                               \
liveMedia/H265VideoStreamDiscreteFramer.cpp                    \
liveMedia/MPEG2TransportStreamFromESSource.cpp                 \
liveMedia/MPEG2TransportStreamIndexFile.cpp                    \
liveMedia/MediaSink.cpp                                        \
liveMedia/MPEG1or2Demux.cpp                                    \
liveMedia/QuickTimeFileSink.cpp                                \
liveMedia/MPEG1or2DemuxedServerMediaSubsession.cpp             \
liveMedia/MatroskaFileParser.cpp                               \
liveMedia/JPEGVideoSource.cpp                                  \
liveMedia/H264VideoStreamDiscreteFramer.cpp                    \
liveMedia/MP3ADURTPSink.cpp                                    \
liveMedia/MPEG4VideoStreamFramer.cpp                           \
liveMedia/MP3ADURTPSource.cpp                                  \
liveMedia/MP3InternalsHuffmanTable.cpp                         \
liveMedia/FramedFileSource.cpp                                 \
liveMedia/MPEG4GenericRTPSink.cpp                              \
liveMedia/MP3ADUTranscoder.cpp                                 \
liveMedia/FramedFilter.cpp                                     \
liveMedia/StreamParser.cpp                                     \
liveMedia/H265VideoRTPSink.cpp                                 \
liveMedia/TCPStreamSink.cpp                                    \
liveMedia/BasicUDPSource.cpp                                   \
liveMedia/MPEG1or2VideoFileServerMediaSubsession.cpp           \
liveMedia/MPEG4ESVideoRTPSource.cpp                            \
liveMedia/MatroskaFile.cpp                                     \
liveMedia/OggFileSink.cpp                                      \
liveMedia/MPEG1or2VideoRTPSource.cpp                           \
liveMedia/InputFile.cpp                                        \
liveMedia/BitVector.cpp                                        \
liveMedia/StreamReplicator.cpp                                 \
liveMedia/H264or5VideoStreamDiscreteFramer.cpp                 \
liveMedia/MP3FileSource.cpp                                    \
liveMedia/OggFileParser.cpp                                    \
liveMedia/EBMLNumber.cpp                                       \
liveMedia/H263plusVideoStreamParser.cpp                        \
liveMedia/VP8VideoRTPSink.cpp                                  \
liveMedia/VideoRTPSink.cpp                                     \
liveMedia/VorbisAudioRTPSource.cpp                             \
liveMedia/H263plusVideoStreamFramer.cpp                        \
liveMedia/DVVideoStreamFramer.cpp                              \
liveMedia/Base64.cpp                                           \
liveMedia/MPEG1or2AudioRTPSink.cpp                             \
liveMedia/ByteStreamFileSource.cpp                             \
liveMedia/H265VideoRTPSource.cpp                               \
liveMedia/AMRAudioFileServerMediaSubsession.cpp                \
liveMedia/H261VideoRTPSource.cpp                               \
liveMedia/RTSPRegisterSender.cpp                               \
liveMedia/MPEG1or2VideoRTPSink.cpp                             \
liveMedia/RTSPClient.cpp                                       \
liveMedia/RTPSource.cpp                                        \
liveMedia/MPEG2IndexFromTransportStream.cpp                    \
liveMedia/AMRAudioFileSink.cpp                                 \
liveMedia/AudioRTPSink.cpp                                     \
liveMedia/H264VideoFileSink.cpp                                \
liveMedia/AudioInputDevice.cpp                                 \
liveMedia/MPEG4VideoStreamDiscreteFramer.cpp                   \
liveMedia/H264or5VideoFileSink.cpp                             \
liveMedia/MP3ADUinterleaving.cpp                               \
liveMedia/AC3AudioStreamFramer.cpp                             \
liveMedia/MPEG2TransportStreamTrickModeFilter.cpp              \
liveMedia/MPEG1or2DemuxedElementaryStream.cpp                  \
liveMedia/MPEG4ESVideoRTPSink.cpp                              \
liveMedia/H264VideoFileServerMediaSubsession.cpp               \
liveMedia/OnDemandServerMediaSubsession.cpp                    \
liveMedia/OutputFile.cpp                                       \
liveMedia/FileSink.cpp                                         \
liveMedia/FileServerMediaSubsession.cpp                        \
liveMedia/MP3InternalsHuffman.cpp                              \
liveMedia/AMRAudioRTPSource.cpp                                \
liveMedia/MatroskaFileServerDemux.cpp                          \
liveMedia/ADTSAudioFileServerMediaSubsession.cpp               \
liveMedia/BasicUDPSink.cpp                                     \
liveMedia/MP3AudioMatroskaFileServerMediaSubsession.cpp        \
liveMedia/MPEG2TransportStreamFramer.cpp                       \
liveMedia/uLawAudioFilter.cpp                                  \
liveMedia/RTSPServer.cpp                                       \
liveMedia/DVVideoFileServerMediaSubsession.cpp                 \
liveMedia/H263plusVideoRTPSink.cpp                             \
liveMedia/H263plusVideoFileServerMediaSubsession.cpp           \
liveMedia/H265VideoStreamFramer.cpp                            \
liveMedia/JPEGVideoRTPSink.cpp                                 \
liveMedia/WAVAudioFileServerMediaSubsession.cpp                \
liveMedia/ByteStreamMultiFileSource.cpp                        \
liveMedia/TheoraVideoRTPSink.cpp                               \
liveMedia/ByteStreamMemoryBufferSource.cpp                     \
liveMedia/ourMD5.cpp                                           \
liveMedia/MPEG2TransportFileServerMediaSubsession.cpp          \
liveMedia/MPEG2TransportStreamMultiplexor.cpp                  \
liveMedia/MPEGVideoStreamParser.cpp                            \
liveMedia/MPEG1or2VideoStreamDiscreteFramer.cpp                \
liveMedia/VP8VideoRTPSource.cpp                                \
liveMedia/H264or5VideoStreamFramer.cpp                         \
liveMedia/AMRAudioRTPSink.cpp                                  \
liveMedia/RTPInterface.cpp                                     \
liveMedia/TheoraVideoRTPSource.cpp                             \
liveMedia/Locale.cpp                                           \
liveMedia/MPEGVideoStreamFramer.cpp                            \
liveMedia/QCELPAudioRTPSource.cpp                              \
liveMedia/ADTSAudioFileSource.cpp                              \
liveMedia/MediaSource.cpp                                      \
liveMedia/AC3AudioRTPSource.cpp                                \
liveMedia/WAVAudioFileSource.cpp                               \
liveMedia/MPEG4LATMAudioRTPSink.cpp                            \
liveMedia/MPEG1or2AudioRTPSource.cpp                           \
liveMedia/GSMAudioRTPSink.cpp                                  \
liveMedia/DigestAuthentication.cpp                             \
liveMedia/RTSPCommon.cpp                                       \
liveMedia/MP3ADU.cpp                                           \
liveMedia/Media.cpp                                            \
liveMedia/MPEG4VideoFileServerMediaSubsession.cpp              \
liveMedia/H264or5VideoRTPSink.cpp                              \
liveMedia/MPEG4LATMAudioRTPSource.cpp                          \
liveMedia/H264VideoRTPSink.cpp                                 \
liveMedia/MPEG1or2AudioStreamFramer.cpp                        \
liveMedia/AC3AudioRTPSink.cpp                                  \
liveMedia/H264VideoStreamFramer.cpp                            \
liveMedia/H265VideoFileSink.cpp                                \
liveMedia/T140TextRTPSink.cpp                                  \
liveMedia/OggFileServerMediaSubsession.cpp                     \
liveMedia/MP3Internals.cpp                                     \
liveMedia/MPEG1or2FileServerDemux.cpp                          \
liveMedia/RTPSink.cpp                                          \
liveMedia/AC3AudioFileServerMediaSubsession.cpp                \
liveMedia/H264VideoRTPSource.cpp                               \
liveMedia/ProxyServerMediaSession.cpp                          \
liveMedia/SimpleRTPSink.cpp                                    \
liveMedia/MultiFramedRTPSink.cpp                               \
liveMedia/H263plusVideoRTPSource.cpp                           \
liveMedia/RTCP.cpp                                             \
liveMedia/JPEGVideoRTPSource.cpp                               \
liveMedia/AMRAudioFileSource.cpp                               \
liveMedia/MultiFramedRTPSource.cpp                             \
liveMedia/AVIFileSink.cpp                                      \
liveMedia/TextRTPSink.cpp                                      \
liveMedia/AMRAudioSource.cpp                                   \
liveMedia/MatroskaDemuxedTrack.cpp                             \
liveMedia/MP3ADUdescriptor.cpp                                 \
liveMedia/QuickTimeGenericRTPSource.cpp                        \
liveMedia/ServerMediaSession.cpp                               \
liveMedia/FramedSource.cpp                                     \
liveMedia/MP3AudioFileServerMediaSubsession.cpp                \
liveMedia/SimpleRTPSource.cpp                                  \
liveMedia/OggDemuxedTrack.cpp                                  \
liveMedia/OggFileServerDemux.cpp                               \
liveMedia/MP3StreamState.cpp                                   \
liveMedia/MPEG1or2VideoStreamFramer.cpp                        \
liveMedia/MPEG2TransportStreamFromPESSource.cpp                \
liveMedia/PassiveServerMediaSubsession.cpp                     \
liveMedia/DeviceSource.cpp                                     \
liveMedia/RTSPServerSupportingHTTPStreaming.cpp                \
liveMedia/MediaSession.cpp                                     \
liveMedia/MPEG2TransportUDPServerMediaSubsession.cpp           \
liveMedia/DVVideoRTPSource.cpp                                 \
liveMedia/SIPClient.cpp                                        \
BasicUsageEnvironment/DelayQueue.cpp                           \
BasicUsageEnvironment/BasicTaskScheduler.cpp                   \
BasicUsageEnvironment/BasicUsageEnvironment0.cpp               \
BasicUsageEnvironment/BasicHashTable.cpp                       \
BasicUsageEnvironment/BasicUsageEnvironment.cpp                \
BasicUsageEnvironment/BasicTaskScheduler0.cpp                  \
UsageEnvironment/HashTable.cpp                                 \
UsageEnvironment/strDup.cpp                                    \
UsageEnvironment/UsageEnvironment.cpp                          
 
include $(BUILD_SHARED_LIBRARY)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 平台上编译 Live555 需要进行以下几个步骤: 1. 下载 Live555 的源码 可以从 Live555 的官网下载源码包,也可以从 GitHub 上下载。 2. 配置交叉编译环境 由于 Live555 是一个 C++ 库,需要使用交叉编译工具链进行编译。你需要下载并安装 Android NDK,并设置好环境变量。 3. 修改 Live555 的配置文件 进入 Live555 的源码目录,找到 `config.Android` 文件,将其中的变量设置为 Android 平台的交叉编译工具链路径和库路径。例如: ``` ANDROID_NDK=/path/to/android-ndk ANDROID_SDK=/path/to/android-sdk ANDROID_API=android-21 ANDROID_ARCH=arch-arm ANDROID_TOOLCHAIN=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 ANDROID_LIB=$ANDROID_NDK/platforms/$ANDROID_API/$ANDROID_ARCH/usr/lib ``` 4. 编译 Live555 库 在命令行中执行以下命令进行编译: ``` ./genMakefiles android make ``` 编译完成后,会生成一个 `live` 目录,其中包含了编译好的库文件和头文件。 5. 将 Live555 库集成到 Android 项目中 将 `live` 目录下的库文件和头文件拷贝到 Android 项目的 jni 目录下,并在 Android.mk 文件中添加以下内容: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := live555 LOCAL_SRC_FILES := libliveMedia.a libBasicUsageEnvironment.a libgroupsock.a libUsageEnvironment.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include include $(PREBUILT_STATIC_LIBRARY) ``` 其中,`LOCAL_SRC_FILES` 指定编译好的库文件,`LOCAL_EXPORT_C_INCLUDES` 指定头文件路径。然后在需要使用 Live555 的代码中引用 `live555` 模块即可。 以上就是在 Android 平台上编译 Live555 的基本步骤。由于 Live555 的配置比较复杂,如果遇到问题可以参考 Live555 的官方文档或者在社区中寻求帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值