mjpg-streamer移植的android平臺也很簡單,只要寫好Android.mk文件進行編譯就行。由於mjpg-streamer是基於jpeg庫來處理攝像頭數據的,因此在移植mjpg-streamer到android時需確保源代碼中包含有jpeg庫,否則在編譯mjpg-streamer時會報告錯誤。
下載mjpg-streamer:
https://github.com/chenguangxiang/mjpg-streamer/tree/master/mjpg-streamer-for-android
下載jpeg庫:
https://github.com/chenguangxiang/mjpg-streamer/tree/master/jpeg
把mjpg-streamer和jpeg庫代碼下載下來後放入external目錄下即可。如編譯報錯,請自行查看編譯錯誤信息修改Android.mk文件或插件代碼。
下面是我自己編寫的Android.mk文件,僅供參考。
LOCAL_PATH:= $(call my-dir)
# build input_control.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/input_control/dynctrl.c \
plugins/input_control/input_uvc.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/input_control/uvcvideo.h \
plugins/input_control/uvc_compat.h \
plugins/input_control/v4l2uvc.h \
plugins/input_control/dynctrl.h
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := input_control
include $(BUILD_SHARED_LIBRARY)
# build input_file.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/input_file/input_file.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := input_file
include $(BUILD_SHARED_LIBRARY)
# build input_http.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/input_http/misc.c \
plugins/input_http/mjpg-proxy.c \
plugins/input_http/input_http.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/input_http/misc.h \
plugins/input_http/mjpg-proxy.h \
plugins/input_http/version.h
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := input_http
include $(BUILD_SHARED_LIBRARY)
# build input_uvc.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
utils.c \
plugins/input_uvc/v4l2uvc.c \
plugins/input_uvc/jpeg_utils.c \
plugins/input_uvc/dynctrl.c \
plugins/input_uvc/input_uvc.c \
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/input_uvc/huffman.h \
plugins/input_uvc/uvc_compat.h \
plugins/input_uvc/v4l2uvc.h \
plugins/input_uvc/jpeg_utils.h \
plugins/input_uvc/dynctrl.h \
../jpeg/jpeglib.h
#LOCAL_CFLAGS := -O1 -DLINUX -DUSE_LIBV4L2 -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_CFLAGS := -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_SHARED_LIBRARIES := libjpeg
LOCAL_MODULE := input_uvc
include $(BUILD_SHARED_LIBRARY)
# build output_autofocus.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/output_autofocus/processJPEG_onlyCenter.c \
plugins/output_autofocus/output_autofocus.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/output_autofocus/processJPEG_onlyCenter.h
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := output_autofocus
include $(BUILD_SHARED_LIBRARY)
# build output_file.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/output_file/output_file.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/output_file/output_file.h
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := output_file
include $(BUILD_SHARED_LIBRARY)
# build output_http.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/output_http/httpd.c \
plugins/output_http/output_http.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/output_http/httpd.h
LOCAL_CFLAGS := -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := output_http
include $(BUILD_SHARED_LIBRARY)
# build output_rtsp.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
plugins/output_rtsp/output_rtsp.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
plugins/output_rtsp/httpd.h
LOCAL_CFLAGS := -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := output_rtsp
include $(BUILD_SHARED_LIBRARY)
# build output_udp.so
include $(CLEAR_VARS)
LOCAL_SRC_FILES := plugins/output_udp/output_udp.c
LOCAL_C_INCLUDES := \
mjpg_streamer.h \
utils.h \
plugins/output.h \
plugins/input.h \
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
LOCAL_MODULE := output_udp
include $(BUILD_SHARED_LIBRARY)
# build mjpg_streamer
include $(CLEAR_VARS)
LOCAL_MODULE := mjpg_streamer
LOCAL_SRC_FILES := utils.c mjpg_streamer.c
LOCAL_C_INCLUDES := utils.h mjpg_streamer.h
LOCAL_CFLAGS := -O2 -DLINUX -D_GNU_SOURCE -Wall
LOCAL_SHARED_LIBRARIES := libjpeg
include $(BUILD_EXECUTABLE)