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

相关推荐
厦门德仔40 分钟前
【WPF】WPF(样式)
android·java·wpf
aqi001 小时前
FFmpeg开发笔记(七十二)Linux给FFmpeg集成MPEG-5视频编解码器EVC
android·ffmpeg·音视频·流媒体
Devil枫3 小时前
Kotlin高级特性深度解析
android·开发语言·kotlin
ChinaDragonDreamer3 小时前
Kotlin:2.1.20 的新特性
android·开发语言·kotlin
雨白14 小时前
Jetpack系列(二):Lifecycle与LiveData结合,打造响应式UI
android·android jetpack
kk爱闹15 小时前
【挑战14天学完python和pytorch】- day01
android·pytorch·python
每次的天空17 小时前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
恋猫de小郭17 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
断剑重铸之日18 小时前
Android自定义相机开发(类似OCR扫描相机)
android
随心最为安18 小时前
Android Library Maven 发布完整流程指南
android