MJPG_streamer 移植到Android过程与错误
作者:互联网
第一次发帖 不太会排版。。。。 将就下吧~ 只有流程 没具体的操作
这是我自己 经历的 移植过程 摄像头采用的是 平板上的 前置摄像头 外接usb 应该也是可以的
开始:
下载好 mjpglib 和 jpeg_streamer 这2个库
版本: 我的mjpeglib 是 8b Android自带的 在 /system/lib 里面有一个 libjpeg.so 根据他的版本来也行
地址 : http://www.ijg.org/files/
我的 jpeg_streamer 是在 http://sourceforge.net/projects/mjpg-streamer/ 下载的
解压。。。 得到 mjpeg 和 jpeg_streamer 两个目录
先从 mjpg 开始 :
设置交叉编译 :
进入 mjpeg目录
执行 ./configure --prefix=$PWD/tmp CC=/home/xiaohuihui/samba/ndk/tool/bin/arm-linux-androideabi-gcc --build=x86_64-linux-gnu --host=arm-linux-gnueabi --enable-shared=yes CFLAGS="-D__ANDROID_API__=23 -pie -fPIE"
生成 Makefile 然后 make make install 会在目录下生成 tmp目录 里面有头文件和共享库文件
tmp/lib/libjpeg.so.8.0.2 这是需要放入 平板的 /system/lib 中 替换原来 的 libjpeg.so
如果 想直接使用 平板自带的 /system/lib 中的 libjpeg.so 就需要下载的 源码 和 自带的 是同一版本
交叉编译工具链 是 ndk 工具生成的 根据自己的 Android 版本进行生成配置 23 表示 android 6.0
接下来是mjpg_streamer
因为我的电脑上有 Android 源码 所以我是用 mmm 编译的 写好 Android.mk 即可
用ndk也行 但是我不会~~~~
Android.mk 我不知道怎么 放到这里 粘贴进去就卡死了 。。。。
mjpg_streamer 的源码是需要修改的
plugins/input_uvc/jpeg_utils.c 的头文件位置是需要指定 mjpg生成的tmp/include/jpeglib.h
编译的 时候出现超多的 错误
比如 进程类的 函数 pthread_cancel(cam); Android 中是没有的 全注释掉
还有个库结构体里面的成员少了一个 db_update 自己加上
具体错误太多 遇到啥改啥~~~~
重要的是 plugins/input_uvc/jpeg_utils.c 中的 compress_image_to_jpeg 函数
有非法指针
//JSAMPROW row_pointer;
JSAMPROW row_pointer[1];
//row_pointer = (JSAMPROW)line_buffer;
row_pointer[0] = line_buffer;
修改这 2 处地方 ~~~
然后 把 mmm 生成后的 库和可执行程序全 push 到平板中
chmod 777 * 给权限 执行即可
./mjpg_streamer -i “./input_uvc.so -d /dev/video1 -f 10 -r 640*480” -o “./output_http.so -w ./www -p 8080”
标签:MJPG,mjpg,jpeg,so,streamer,Android,row 来源: https://blog.csdn.net/qq_29624813/article/details/94044787