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

相关推荐
松仔log30 分钟前
JetPack——Paging3+Room
android·java·zoom
Lei活在当下6 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
kernelcraft6 小时前
cuongpmyoutube-dl-android:多平台视频下载的Android客户端
android·其他
佚泽7 小时前
Android Studio 如何配置gradle
android·ide·android studio
苏坡余10 小时前
Android Pixel7 13.0 HAL Service 调试
android
私人珍藏库11 小时前
【Android】AI视频剪辑-Ai剪辑视频 免费无广告
android·app·工具·软件·多功能
乐活青年11 小时前
新版Android Studio不显示gradle task list 问题
android·ide·android studio
alphageek811 小时前
JeffMony开源的VideoDownloader,Android平台视频下载SDK
android·其他·开源·音视频
亚空间仓鼠12 小时前
Docker容器化高可用架构部署方案(十五)
android·redis·docker·架构·sentinel
oh_my_god12 小时前
增加系统白名单,允许普通APP调用Android系统内部隐藏方法
android·framework