Live555在Amlogic系列芯片上的移植
2015-04-28 14:54
1481 查看
近期因为工作的原因,需要用到Live555,之前在工作之余玩过它,但没有记录移植过程,这次在往Amlogic系列平台上移植的时候,遇到了些小麻烦,所以这次决定记录下这个过程。
一,获取Live555的最新源码。地址:http://www.live555.com/liveMedia/public/live.2015.04.22.tar.gz。(这个代码的日期会随时更新,这是我下载时最近的版本)。
二、解压源码并把代码copy到Amlogic系统平台的external目录下,并命名为Live555。修改整个Live555目录的文件权限属性,因为有些文件是只有读权限的,我们没办法修改。
三、在Live555目录下和mediaServer目录下分别增加一个Android.mk文件。
四、填写如下内容:
1.***/live555/Android.mk
其中LOCAL_CPPFLAGS:
-DNO_SSTREAM --解决“fatal error: sstream: No such file or directory”
-fexceptions -- 解决“error: exception handling disabled, use -fexceptions to enable”
-DXLOCALE_NOT_USED -- 解决"xlocale.h: No such file or directory"
如果出现:
error: undefined reference to '__cxa_end_cleanup'
error: undefined reference to '__gxx_personality_v0'
等类似错误提示,增加:
其中NDK_PATH 是你平台中NDK的路径,根据自己的实际情况修改。
2.***/live555/mediaServer/Android.mk
五、进入Live555主目录,使用mm -B编译。
看到这两句话就表示编译成功了:
Install: out/target/product/***/system/lib/liblive555.so
Install: out/target/product/***/system/bin/mediaServer
六、把liblive555.so copy到测试板中的/system/lib目录下,修改可读写权限,并把mediaServer copy到如:/data/tmp目录下。
七、执行./mediaServer
一,获取Live555的最新源码。地址:http://www.live555.com/liveMedia/public/live.2015.04.22.tar.gz。(这个代码的日期会随时更新,这是我下载时最近的版本)。
二、解压源码并把代码copy到Amlogic系统平台的external目录下,并命名为Live555。修改整个Live555目录的文件权限属性,因为有些文件是只有读权限的,我们没办法修改。
三、在Live555目录下和mediaServer目录下分别增加一个Android.mk文件。
四、填写如下内容:
1.***/live555/Android.mk
LOCAL_PATH := $(call my-dir) LIVE_PATH := $(LOCAL_PATH) include $(CLEAR_VARS) LOCAL_C_INCLUDES := \ $(LOCAL_PATH) \ $(LOCAL_PATH)/BasicUsageEnvironment \ $(LOCAL_PATH)/BasicUsageEnvironment/include \ $(LOCAL_PATH)/groupsock \ $(LOCAL_PATH)/groupsock/include \ $(LOCAL_PATH)/liveMedia \ $(LOCAL_PATH)/liveMedia/include \ $(LOCAL_PATH)/UsageEnvironment \ $(LOCAL_PATH)/UsageEnvironment/include basicusage_src_files := \ BasicUsageEnvironment/BasicHashTable.cpp \ BasicUsageEnvironment/BasicTaskScheduler0.cpp \ BasicUsageEnvironment/BasicTaskScheduler.cpp \ BasicUsageEnvironment/BasicUsageEnvironment0.cpp \ BasicUsageEnvironment/BasicUsageEnvironment.cpp \ BasicUsageEnvironment/DelayQueue.cpp groupsock_src_files := \ groupsock/GroupEId.cpp \ groupsock/Groupsock.cpp \ groupsock/GroupsockHelper.cpp \ groupsock/inet.c \ groupsock/IOHandlers.cpp \ groupsock/NetAddress.cpp \ groupsock/NetInterface.cpp livemedia_src_files := \ liveMedia/AC3AudioFileServerMediaSubsession.cpp \ liveMedia/AC3AudioRTPSink.cpp \ liveMedia/AC3AudioRTPSource.cpp \ liveMedia/AC3AudioStreamFramer.cpp \ liveMedia/ADTSAudioFileServerMediaSubsession.cpp \ liveMedia/ADTSAudioFileSource.cpp \ liveMedia/AMRAudioFileServerMediaSubsession.cpp \ liveMedia/AMRAudioFileSink.cpp \ liveMedia/AMRAudioFileSource.cpp \ liveMedia/AMRAudioRTPSink.cpp \ liveMedia/AMRAudioRTPSource.cpp \ liveMedia/AMRAudioSource.cpp \ liveMedia/AudioInputDevice.cpp \ liveMedia/AudioRTPSink.cpp \ liveMedia/AVIFileSink.cpp \ liveMedia/Base64.cpp \ liveMedia/BasicUDPSink.cpp \ liveMedia/BasicUDPSource.cpp \ liveMedia/BitVector.cpp \ liveMedia/ByteStreamFileSource.cpp \ liveMedia/ByteStreamMemoryBufferSource.cpp \ liveMedia/ByteStreamMultiFileSource.cpp \ liveMedia/DarwinInjector.cpp \ liveMedia/DeviceSource.cpp \ liveMedia/DigestAuthentication.cpp \ liveMedia/DVVideoFileServerMediaSubsession.cpp \ liveMedia/DVVideoRTPSink.cpp \ liveMedia/DVVideoRTPSource.cpp \ liveMedia/DVVideoStreamFramer.cpp \ liveMedia/EBMLNumber.cpp \ liveMedia/FileServerMediaSubsession.cpp \ liveMedia/FileSink.cpp \ liveMedia/FramedFileSource.cpp \ liveMedia/FramedFilter.cpp \ liveMedia/FramedSource.cpp \ liveMedia/GSMAudioRTPSink.cpp \ liveMedia/H261VideoRTPSource.cpp \ liveMedia/H263plusVideoFileServerMediaSubsession.cpp \ liveMedia/H263plusVideoRTPSink.cpp \ liveMedia/H263plusVideoRTPSource.cpp \ liveMedia/H263plusVideoStreamFramer.cpp \ liveMedia/H263plusVideoStreamParser.cpp \ liveMedia/H264or5VideoFileSink.cpp \ liveMedia/H264or5VideoRTPSink.cpp \ liveMedia/H264or5VideoStreamDiscreteFramer.cpp \ liveMedia/H264or5VideoStreamFramer.cpp \ liveMedia/H264VideoFileServerMediaSubsession.cpp \ liveMedia/H264VideoFileSink.cpp \ liveMedia/H264VideoRTPSink.cpp \ liveMedia/H264VideoRTPSource.cpp \ liveMedia/H264VideoStreamDiscreteFramer.cpp \ liveMedia/H264VideoStreamFramer.cpp \ liveMedia/H265VideoFileServerMediaSubsession.cpp \ liveMedia/H265VideoFileSink.cpp \ liveMedia/H265VideoRTPSink.cpp \ liveMedia/H265VideoRTPSource.cpp \ liveMedia/H265VideoStreamDiscreteFramer.cpp \ liveMedia/H265VideoStreamFramer.cpp \ liveMedia/InputFile.cpp \ liveMedia/JPEGVideoRTPSink.cpp \ liveMedia/JPEGVideoRTPSource.cpp \ liveMedia/JPEGVideoSource.cpp \ liveMedia/Locale.cpp \ liveMedia/MatroskaDemuxedTrack.cpp \ liveMedia/MatroskaFile.cpp \ liveMedia/MatroskaFileParser.cpp \ liveMedia/MatroskaFileServerDemux.cpp \ liveMedia/MatroskaFileServerMediaSubsession.cpp \ liveMedia/Media.cpp \ liveMedia/MediaSession.cpp \ liveMedia/MediaSink.cpp \ liveMedia/MediaSource.cpp \ liveMedia/MP3ADU.cpp \ liveMedia/MP3ADUdescriptor.cpp \ liveMedia/MP3ADUinterleaving.cpp \ liveMedia/MP3ADURTPSink.cpp \ liveMedia/MP3ADURTPSource.cpp \ liveMedia/MP3ADUTranscoder.cpp \ liveMedia/MP3AudioFileServerMediaSubsession.cpp \ liveMedia/MP3AudioMatroskaFileServerMediaSubsession.cpp \ liveMedia/MP3FileSource.cpp \ liveMedia/MP3Internals.cpp \ liveMedia/MP3InternalsHuffman.cpp \ liveMedia/MP3InternalsHuffmanTable.cpp \ liveMedia/MP3StreamState.cpp \ liveMedia/MP3Transcoder.cpp \ liveMedia/MPEG1or2AudioRTPSink.cpp \ liveMedia/MPEG1or2AudioRTPSource.cpp \ liveMedia/MPEG1or2AudioStreamFramer.cpp \ liveMedia/MPEG1or2Demux.cpp \ liveMedia/MPEG1or2DemuxedElementaryStream.cpp \ liveMedia/MPEG1or2DemuxedServerMediaSubsession.cpp \ liveMedia/MPEG1or2FileServerDemux.cpp \ liveMedia/MPEG1or2VideoFileServerMediaSubsession.cpp \ liveMedia/MPEG1or2VideoRTPSink.cpp \ liveMedia/MPEG1or2VideoRTPSource.cpp \ liveMedia/MPEG1or2VideoStreamDiscreteFramer.cpp \ liveMedia/MPEG1or2VideoStreamFramer.cpp \ liveMedia/MPEG2IndexFromTransportStream.cpp \ liveMedia/MPEG2TransportFileServerMediaSubsession.cpp \ liveMedia/MPEG2TransportStreamFramer.cpp \ liveMedia/MPEG2TransportStreamFromESSource.cpp \ liveMedia/MPEG2TransportStreamFromPESSource.cpp \ liveMedia/MPEG2TransportStreamIndexFile.cpp \ liveMedia/MPEG2TransportStreamMultiplexor.cpp \ liveMedia/MPEG2TransportStreamTrickModeFilter.cpp \ liveMedia/MPEG2TransportUDPServerMediaSubsession.cpp \ liveMedia/MPEG4ESVideoRTPSink.cpp \ liveMedia/MPEG4ESVideoRTPSource.cpp \ liveMedia/MPEG4GenericRTPSink.cpp \ liveMedia/MPEG4GenericRTPSource.cpp \ liveMedia/MPEG4LATMAudioRTPSink.cpp \ liveMedia/MPEG4LATMAudioRTPSource.cpp \ liveMedia/MPEG4VideoFileServerMediaSubsession.cpp \ liveMedia/MPEG4VideoStreamDiscreteFramer.cpp \ liveMedia/MPEG4VideoStreamFramer.cpp \ liveMedia/MPEGVideoStreamFramer.cpp \ liveMedia/MPEGVideoStreamParser.cpp \ liveMedia/MultiFramedRTPSink.cpp \ liveMedia/MultiFramedRTPSource.cpp \ liveMedia/OggDemuxedTrack.cpp \ liveMedia/OggFile.cpp \ liveMedia/OggFileParser.cpp \ liveMedia/OggFileServerDemux.cpp \ liveMedia/OggFileServerMediaSubsession.cpp \ liveMedia/OggFileSink.cpp \ liveMedia/OnDemandServerMediaSubsession.cpp \ liveMedia/ourMD5.cpp \ liveMedia/OutputFile.cpp \ liveMedia/PassiveServerMediaSubsession.cpp \ liveMedia/ProxyServerMediaSession.cpp \ liveMedia/QCELPAudioRTPSource.cpp \ liveMedia/QuickTimeFileSink.cpp \ liveMedia/QuickTimeGenericRTPSource.cpp \ liveMedia/RTCP.cpp \ liveMedia/rtcp_from_spec.c \ liveMedia/RTPInterface.cpp \ liveMedia/RTPSink.cpp \ liveMedia/RTPSource.cpp \ liveMedia/RTSPClient.cpp \ liveMedia/RTSPCommon.cpp \ liveMedia/RTSPRegisterSender.cpp \ liveMedia/RTSPServer.cpp \ liveMedia/RTSPServerSupportingHTTPStreaming.cpp \ liveMedia/ServerMediaSession.cpp \ liveMedia/SimpleRTPSink.cpp \ liveMedia/SimpleRTPSource.cpp \ liveMedia/SIPClient.cpp \ liveMedia/StreamParser.cpp \ liveMedia/StreamReplicator.cpp \ liveMedia/T140TextRTPSink.cpp \ liveMedia/TCPStreamSink.cpp \ liveMedia/TextRTPSink.cpp \ liveMedia/TheoraVideoRTPSink.cpp \ liveMedia/TheoraVideoRTPSource.cpp \ liveMedia/uLawAudioFilter.cpp \ liveMedia/VideoRTPSink.cpp \ liveMedia/VorbisAudioRTPSink.cpp \ liveMedia/VorbisAudioRTPSource.cpp \ liveMedia/VP8VideoRTPSink.cpp \ liveMedia/VP8VideoRTPSource.cpp \ liveMedia/VP9VideoRTPSink.cpp \ liveMedia/VP9VideoRTPSource.cpp \ liveMedia/WAVAudioFileSource.cpp \ liveMedia/WAVAudioFileServerMediaSubsession.cpp usageenv_src_files := \ UsageEnvironment/HashTable.cpp \ UsageEnvironment/strDup.cpp \ UsageEnvironment/UsageEnvironment.cpp LOCAL_SRC_FILES := \ $(basicusage_src_files) \ $(groupsock_src_files) \ $(livemedia_src_files) \ $(usageenv_src_files) LOCAL_MODULE := liblive555 LOCAL_ARM_MODE := arm LOCAL_PRELINK_MODULE := false LOCAL_MODULE_TAGS := optional LOCAL_CPPFLAGS := \ -DNO_SSTREAM \ -fexceptions \ -DXLOCALE_NOT_USED NDK_PATH 4000 := $(LIVE_PATH)/../../prebuilts/ndk/8/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a LOCAL_LDFLAGS := \ <span style="white-space:pre"> </span>-L$(NDK_PATH) \ -lgnustl_static \ -lsupc++ include $(BUILD_SHARED_LIBRARY) #build mediaServer include $(LIVE_PATH)/mediaServer/Android.mk
其中LOCAL_CPPFLAGS:
-DNO_SSTREAM --解决“fatal error: sstream: No such file or directory”
-fexceptions -- 解决“error: exception handling disabled, use -fexceptions to enable”
-DXLOCALE_NOT_USED -- 解决"xlocale.h: No such file or directory"
如果出现:
error: undefined reference to '__cxa_end_cleanup'
error: undefined reference to '__gxx_personality_v0'
等类似错误提示,增加:
NDK_PATH := $(LIVE_PATH)/../../prebuilts/ndk/8/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a LOCAL_LDFLAGS := \ <span> </span>-L$(NDK_PATH) \ -lgnustl_static \ -lsupc++
其中NDK_PATH 是你平台中NDK的路径,根据自己的实际情况修改。
2.***/live555/mediaServer/Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= mediaServer LOCAL_PRELINK_MODULE := false LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := \ live555MediaServer.cpp \ DynamicRTSPServer.cpp LOCAL_SHARED_LIBRARIES := liblive555 LOCAL_C_INCLUDES := \ $(LOCAL_PATH) \ $(LOCAL_PATH)/../ \ $(LOCAL_PATH)/../BasicUsageEnvironment \ $(LOCAL_PATH)/../BasicUsageEnvironment/include \ $(LOCAL_PATH)/../groupsock \ $(LOCAL_PATH)/../groupsock/include \ $(LOCAL_PATH)/../liveMedia \ $(LOCAL_PATH)/../liveMedia/include \ $(LOCAL_PATH)/../UsageEnvironment \ $(LOCAL_PATH)/../UsageEnvironment/include
五、进入Live555主目录,使用mm -B编译。
看到这两句话就表示编译成功了:
Install: out/target/product/***/system/lib/liblive555.so
Install: out/target/product/***/system/bin/mediaServer
六、把liblive555.so copy到测试板中的/system/lib目录下,修改可读写权限,并把mediaServer copy到如:/data/tmp目录下。
七、执行./mediaServer
version 0.87 (LIVE555 Streaming Media library version 2015.04.16). Play streams from this server using the URL rtsp://192.168.0.101/<filename> where <filename> is a file present in the current directory. Each file's type is inferred from its name suffix: ".264" => a H.264 Video Elementary Stream file ".265" => a H.265 Video Elementary Stream file ".aac" => an AAC Audio (ADTS format) file ".ac3" => an AC-3 Audio file ".amr" => an AMR Audio file ".dv" => a DV Video file ".m4e" => a MPEG-4 Video Elementary Stream file ".mkv" => a Matroska audio+video+(optional)subtitles file ".mp3" => a MPEG-1 or 2 Audio file ".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file ".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file ".ts" => a MPEG Transport Stream file (a ".tsx" index file - if present - provides server 'trick play' support) ".vob" => a VOB (MPEG-2 video with AC-3 audio) file ".wav" => a WAV Audio file ".webm" => a WebM audio(Vorbis)+video(VP8) file See http://www.live555.com/mediaServer/ for additional documentation. (We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).)
相关文章推荐
- 基于芯片i.mx536(cotex-a8)核的移植系列文章
- STM32工程不同系列芯片间的移植
- STM32工程不同系列芯片间的移植
- APxxx系列wifi驱动芯片移植笔记
- 雷凌 Ralink RT2070 RT3070 RT2870系列芯片驱动移植到LPC3250Demo板的ifconfig ra0 up问题解决方案~~
- W25Q128(W25Q系列SPI Flahs和W25X系列的SPI Flash)驱动,使用句柄方式,分离底层,便于移植
- 74系列芯片功能说明
- 最近研究si47xx系列芯片
- c# 在mono上的移植 系列之三 UrlRewrite form action
- 移植u-boot1.1.6到友善mini2440学习笔记之环境搭建(系列之一)
- 小马哥----高仿红米note刷机 红米noteh19系列主板移植中文触摸板rec 界面图
- ZYNQ跑系统 系列(一) 传统方式移植linux
- 74系列芯片资料
- QT学习系列-----5 --Qt 4.8.5的移植
- Mbed在自己的stm32系列平台移植适配(二)
- vlc-android 移植live555到android
- ATSHA204a加密芯片在TG401上的移植配置与使用
- Linux芯片级移植与底层驱动(基于3.7.4内核) --中断控制器 推荐
- Windows CE驱动N枪拍案惊奇系列 之 基于Wince5.0的DM9000A的驱动分析和移植步骤
- android ndk r9 移植 live555 ffmpeg2.0 sdl2.0.1最新库整合编译