07/24/2019

给Android移植V4L2 RTSP Server

现有的v4l2rtspserver项目无法编译出Android可用的二进制文件。所以需要修改一下cmake

想稳定的传输摄像头视频,离不开v4l2和rtsp。所以就有了v4l2rtspserver这种神器。项目的地址在 GitHub 上。

这个项目使用的cmake,提供了x86(默认) / mips / nanopi(linux-armhf) / raspberry(linux-armv7)四种编译目标。

具体修改内容

首先设置编译工具链

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
SET(CMAKE_C_COMPILER arm-linux-androideabi-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-androideabi-g++)

设置编译工具链为Android NDK (arm-linux-androideabi-)

不加载安卓不支持的库

停止加载ALSA

set(ALSA 0)

不需要加载pthread,注释掉

#find_package (Threads)
#target_link_libraries (${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})

改FLAG

set(CMAKE_C_FLAGS "-Wall -DANDROID_OLD_NDK -pie")
set(CMAKE_CXX_FLAGS "-Wall -DANDROID_OLD_NDK -pie")

pie = Position Independent Executables. Android二进制文件需要是pie模式的
ANDROID_OLD_NDK NDK版本问题,否则网络代码编译不通过