下载
bash
wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
tar -xzvf live555-latest.tar.gz
加入版本控制
bash
git init
git add .
git commit -a -m "first init"
git log
修改config.android-arm64
bash
cd live
vim config.android-arm64
./genMakefiles android-arm64
make -j16
或者
make V=1 -j$(nproc)
config.android-arm64
bash
NDK=/g/SDK/ndk/21.4.7075529
TOOLCHAIN=$(NDK)/toolchains/llvm/prebuilt/windows-x86_64
API=21
SYSROOT=$(NDK)/toolchains/llvm/prebuilt/windows-x86_64/sysroot
CROSS_PREFIX=$(TOOLCHAIN)/bin/aarch64-linux-android-
DESTDIR=$(shell pwd)/../arm64-v8a
COMPILE_OPTS = $(INCLUDES) -m64 -fPIC -fpic -I$(SYSROOT)/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1 -DNO_GETIFADDRS=1 --sysroot=$(SYSROOT)
C = c
C_COMPILER = $(TOOLCHAIN)/bin/aarch64-linux-android$(API)-clang
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = $(TOOLCHAIN)/bin/aarch64-linux-android$(API)-clang++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1
OBJ = o
LINK = $(CPLUSPLUS_COMPILER) -o
LINK_OPTS = -static-libstdc++
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = $(CROSS_PREFIX)ar cr
LIBRARY_LINK_OPTS =
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =
config.android-armv7
bash
NDK=/g/SDK/ndk/21.4.7075529
TOOLCHAIN=$(NDK)/toolchains/llvm/prebuilt/windows-x86_64
API=24
SYSROOT=$(NDK)/toolchains/llvm/prebuilt/windows-x86_64/sysroot
CROSS_PREFIX=$(TOOLCHAIN)/bin/arm-linux-androideabi-
DESTDIR=$(shell pwd)/../armeabi-v7a
COMPILE_OPTS = $(INCLUDES) -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fPIC -I$(SYSROOT)/usr/local/include -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1 -DNO_GETIFADDRS=1 --sysroot=$(SYSROOT)
C = c
C_COMPILER = $(TOOLCHAIN)/bin/armv7a-linux-androideabi$(API)-clang
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = $(TOOLCHAIN)/bin/armv7a-linux-androideabi$(API)-clang++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1
OBJ = o
LINK = $(CPLUSPLUS_COMPILER) -o
LINK_OPTS = -static-libstdc++
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = $(CROSS_PREFIX)ar cr
LIBRARY_LINK_OPTS =
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =
编译

make报错
bash
$ make
bash: make: command not found
错误示范一
注意windows下的make名字叫mingw32-make
bash
$ which mingw32-make
/e/msys64/mingw64/bin/mingw32-make
正确操作
注意这个是在MSys2环境下
或者将make加入环境变量
bash
$ which make
/g/MSYS2/mingw64/bin/make
报错
bash
testRTSPClient.cpp:64:24: error: copying variable of type 'EventLoopWatchVariable' (aka 'atomic<char>') invokes deleted constructor
EventLoopWatchVariable eventLoopWatchVariable = 0;
^ ~
G:/SDK/ndk/21.4.7075529/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\atomic:1643:7: note: copy constructor of 'atomic<char>' is implicitly deleted because base class '__atomic_base<char>' has a deleted copy constructor
: public __atomic_base<_Tp>
^
G:/SDK/ndk/21.4.7075529/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\atomic:1562:7: note: copy constructor of
'__atomic_base<char, true>' is implicitly deleted because base class '__atomic_base<char, false>' has a deleted copy constructor
: public __atomic_base<_Tp, false>
^
G:/SDK/ndk/21.4.7075529/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\atomic:1542:5: note: '__atomic_base' has been explicitly
marked deleted here
__atomic_base(const __atomic_base&) = delete;
^
1 error generated.
make[1]: *** [Makefile:55: testRTSPClient.o] Error 1
make[1]: Leaving directory 'G:/Live555/live/testProgs'
make: *** [Makefile:45: all] Error 2
修改
报错
BasicTaskScheduler.cpp: In member function 'virtual void BasicTaskScheduler::SingleStep(unsigned int)': BasicTaskScheduler.cpp:191:40: error: 'struct std::atomic_flag' has no member named 'test' 191 | if (fTriggersAwaitingHandling[i].test()) { | ^~~~ make[1]: *** [Makefile:41: BasicTaskScheduler.o] Error 1 make[1]: Leaving directory '/e/Live555/live/BasicUsageEnvironment' make: *** [Makefile:38: all] Error 2
解决
windows编译成功

安装
make install
bash
$ make install
cd liveMedia ; make install
make[1]: Entering directory '/e/Live555/live/liveMedia'
install -d /usr/local/include/liveMedia /usr/local/lib
install -m 644 include/*.hh /usr/local/include/liveMedia
install -m 644 libliveMedia.a /usr/local/lib
make[1]: Leaving directory '/e/Live555/live/liveMedia'
cd groupsock ; make install
make[1]: Entering directory '/e/Live555/live/groupsock'
install -d /usr/local/include/groupsock /usr/local/lib
install -m 644 include/*.hh include/*.h /usr/local/include/groupsock
install -m 644 libgroupsock.a /usr/local/lib
make[1]: Leaving directory '/e/Live555/live/groupsock'
cd UsageEnvironment ; make install
make[1]: Entering directory '/e/Live555/live/UsageEnvironment'
install -d /usr/local/include/UsageEnvironment /usr/local/lib
install -m 644 include/*.hh /usr/local/include/UsageEnvironment
install -m 644 libUsageEnvironment.a /usr/local/lib
make[1]: Leaving directory '/e/Live555/live/UsageEnvironment'
cd BasicUsageEnvironment ; make install
make[1]: Entering directory '/e/Live555/live/BasicUsageEnvironment'
install -d /usr/local/include/BasicUsageEnvironment /usr/local/lib
install -m 644 include/*.hh /usr/local/include/BasicUsageEnvironment
install -m 644 libBasicUsageEnvironment.a /usr/local/lib
make[1]: Leaving directory '/e/Live555/live/BasicUsageEnvironment'
cd testProgs ; make install
make[1]: Entering directory '/e/Live555/live/testProgs'
install -d /usr/local/bin
install -m 755 testMP3Streamer testMPEG1or2VideoStreamer testMPEG1or2AudioVideoStreamer testMPEG2TransportStreamer testMPEG4VideoStreamer testH264VideoStreamer testH265VideoStreamer testDVVideoStreamer testWAVAudioStreamer testAMRAudioStreamer testMKVStreamer testOggStreamer vobStreamer testMP3Receiver testMPEG1or2VideoReceiver testMPEG2TransportReceiver sapWatch testRelay testReplicator testOnDemandRTSPServer testRTSPClient openRTSP playSIP testH264VideoToHLSSegments testMPEG1or2Splitter testMPEG1or2ProgramToTransportStream testH264VideoToTransportStream testH265VideoToTransportStream MPEG2TransportStreamIndexer testMPEG2TransportStreamTrickPlay registerRTSPStream testMKVSplitter testMPEG2TransportStreamSplitter mikeyParse /usr/local/bin
make[1]: Leaving directory '/e/Live555/live/testProgs'
cd mediaServer ; make install
make[1]: Entering directory '/e/Live555/live/mediaServer'
install -d /usr/local/bin
install -m 755 live555MediaServer /usr/local/bin
make[1]: Leaving directory '/e/Live555/live/mediaServer'
cd proxyServer ; make install
make[1]: Entering directory '/e/Live555/live/proxyServer'
install -d /usr/local/bin
install -m 755 live555ProxyServer /usr/local/bin
make[1]: Leaving directory '/e/Live555/live/proxyServer'
cd hlsProxy ; make install
make[1]: Entering directory '/e/Live555/live/hlsProxy'
install -d /usr/local/bin
install -m 755 live555HLSProxy /usr/local/bin
make[1]: Leaving directory '/e/Live555/live/hlsProxy'
windows安装成功

arm64安装成功

armv7安装成功

如何使用?
https://pmishra0103.medium.com/live555-streaming-media-and-android-setup-bf6b7736c53b
命令行使用
live555MediaServer
另一种编译方式
Android项目源码
https://github.com/goodluckforme/Live555OnAndroid.git
这个是再Android工程内直接使用Android.mk完成编译,专属Android平台,实现简单
编译文件和修改部分源码
https://github.com/goodluckforme/live555_compile
http://www.live555.com/liveMedia/#3rd-party-apps
http://www.live555.com/mediaServer/
https://pmishra0103.medium.com/live555-streaming-media-and-android-setup-bf6b7736c53b