Live555+Windows+MSys2 编译Androidso库和运行使用

下载
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

相关推荐
weiggle8 小时前
第七篇:状态提升与单向数据流——架构设计的核心
android
xingpanvip8 小时前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
goldenrolan8 小时前
A公司物料替代测试系统 v1.7:从需求到 exe/apk 的 AI 辅助全链路实践
android·自动化测试·软件测试·python·ai
AC赳赳老秦10 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
骇客之技术11 小时前
AutoLua:在安卓上写 Lua 脚本
android·junit·lua
kiros_wang12 小时前
Android 常见面试题
android
货拉拉技术12 小时前
Hook植入日志协助定位问题方案
android
FlightYe12 小时前
Android投屏MirrorCast全链路
android
Ehtan_Zheng13 小时前
Kotlin const val vs val:字节码、性能与隐藏陷阱详解
android·kotlin
墨狂之逸才13 小时前
Android TV 垃圾应用清理指南
android