CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 13516|回复: 5

cubie 使用mjpg-streamer 大合集 亲测

[复制链接]
发表于 2013-5-30 17:27:27 | 显示全部楼层 |阅读模式
本帖最后由 SUNROC1 于 2015-10-5 10:14 编辑

cubie 下sd卡ubuntu系统测试mjpg-streamer

测试系统Download Ubuntu/Linaro image for sd card [1.8GB]

测试硬件: cubieboard  
                   支持linux-uvc的摄像头    USB摄像头(中星微ZC301)       淘宝上卖的二手摄像头(10元左右,加运费总共20左右)

测试软件: mjpg-streamer

//---------------------------------------------------------------------------------------------------------------------------------------------------
步骤:  

将ubuntu刷入sd卡   

升级必要的工具     如
svn安装方法
1、在终端中直接输入  sudo apt-get install subversion,选择安装即可
2、查看版本命令 svnserve --version(更多命令直接键入svnserve --help可查看到)
3、查看svnserver是否已启动: netstat -ntlp,可看到svn对应的端口3690(如果没有看见,则证明服务未启动,可使用svnserve -d启动svn服务,还可以通过svnserve -d -r /home/wwwwfw/mobile来指定启动目录)
参考:http://www.cnblogs.com/macula/archive/2012/02/12/2347637.html

安装mjpg-streamer
终端输入:  
svn co https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer     (20140404 update)
等待安装完毕
进入mjpg-streamer 目录:终端输入: cd /home/cubie/mjpg-streamer/mjpg-streamer
编译:make
如果提示make 未知命令,则需要安装gcc
如果是cb1 并且安装了lubuntu-desktop-12.10-v1.05  或者 Ubuntu 13.03 server v1.03
安装前先备份/sbin 目录
sudo mkdir /sbin_bak
sudo cp -r /sbin /sbin_bak
sudo apt-get install build-essential
安装完成后f覆盖sbin
sudo cp -r /sbin_bak/* /sbin
sudo rm -rf /sbin_bak
原因:安装gcc等一系列安装依赖后,会导致reboot、shutdown脚本丢失,导致重启后cb1挂掉,只能重新刷系统

安装如果遇到:
sudo apt-get install 报错:
dpkg: error processing package libpango1.0-0:armhf (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
fontconfig
libpango-1.0-0:armhf
libpangoft2-1.0-0:armhf
libpangocairo-1.0-0:armhf
chromium-browser
libpangoxft-1.0-0:armhf
libpangox-1.0-0:armhf
dbus
libpango1.0-0:armhf
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决办法如下:
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old    //现将info文件夹更名
sudo mkdir /var/lib/dpkg/info     //再新建一个新的info文件夹
sudo apt-get update,
sudo apt-get -f install    //不用解释了吧
sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old    //执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下
sudo rm -rf /var/lib/dpkg/info    //把自己新建的info文件夹删掉
sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info    //把以前的info文件夹重新改回名字
到此问题顺利解决,哈哈

新系统会报错:找不到jpeglib.h。装libjpeg-dev包可以解决
sudo apt-get install libjpeg-dev

然后可能会报convert:not found,这个是因为没有装imagemagick包。
编译通过后,还不能运行,还要继续编译UVC-streamer
参考http://blog.sina.com.cn/s/blog_569eb8d7010181kt.html
编译完后输入:nano start.sh
再输入:./start.sh
如果显示没有驱动,需要下载驱动:
http://download.csdn.net/download/zizhuyu1006/3974253

如果显示
MJPG Streamer Version: svn rev: 3:172M
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Adding control for Pan (relative)
UVCIOC_CTRL_ADD - Error: Invalid argument
Adding control for Tilt (relative)
UVCIOC_CTRL_ADD - Error: Invalid argument
Adding control for Pan Reset
UVCIOC_CTRL_ADD - Error: Invalid argument
Adding control for Tilt Reset
UVCIOC_CTRL_ADD - Error: Invalid argument
Adding control for Pan/tilt Reset
UVCIOC_CTRL_ADD - Error: Invalid argument
Adding control for Focus (absolute)
UVCIOC_CTRL_ADD - Error: Invalid argument
mapping control for Pan (relative)
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Tilt (relative)
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Pan Reset
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Tilt Reset
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Pan/tilt Reset
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Focus (absolute)
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for LED1 Mode
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for LED1 Frequency
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Disable video processing
UVCIOC_CTRL_MAP - Error: Invalid argument
mapping control for Raw bits per pixel
UVCIOC_CTRL_MAP - Error: Invalid argument
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled
不用理中间的错误。
参考:http://blog.sina.com.cn/s/blog_6933011901010ub8.html

如果出现
MJPG Streamer Version: svn rev: 3:172
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
ERROR opening V4L interface: No such file or directory
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
解决办法
重新插拔摄像头,看看效果
没插摄像头会出现这种错误,摄像头没驱动也会出现这种错误。
参考:
http://cn.cubieboard.org/forum.php?mod=viewthread&tid=324&highlight=mjpg
http://www.linuxidc.com/Linux/2012-05/59449.htm
http://blog.csdn.net/firefoxbug/article/details/7524697

错误内容:


root@fire:~/mjpg-streamer/mjpg-streamer-experimental# ./start.shMJPG Streamer Version: svn rev: 3:160 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: -1 i: Format............: JPEGUnable to set format: 1196444237 res: 640x480 Init v4L2 failed !! exit fatal i: init_VideoIn failed

错误原因:
市面上大部分摄像头都是支持YUV的,而不是JPEG的。mjpg-stream支持JPEG和YUV两种格式。

[fire@fire mjpg-streamer]$ cd mjpg-streamer-experimental/plugins/input_uvc/
[fire@fire input_uvc]$ vim input_uvc.c

int input_init(input_parameter *param, int id){    char *dev = "/dev/video0", *s;    int width = 640, height = 480, fps = -1, format = V4L2_PIX_FMT_MJPEG, i;    /* initialize the mutes variable */    if(pthread_mutex_init(&cams[id].controls_mutex, NULL) != 0) {        IPRINT("could not initialize mutex variable\n");        exit(EXIT_FAILURE);    }......................
查看效果

本机查看视频输入 : http://localhost:8080/

其它电脑查看输入:  http://本机ip地址:8080/


再来一个参考:http://www.cnblogs.com/hnrainll/archive/2011/06/08/2074909.html


2. 使用

在firefox浏览器里面输入 http://192.168.1.1:8080/?action=stream ,应该能看到摄像头抓取的视频

这个视频的帧数很低,显得摄像头反应很慢。可以修改/etc/config/mjpg-streamer里面的fps参数。

如果想在公司访问家里的摄像头,还应该修改防火墙,接受8080端口的外网请求。
添加下面配置到 /etc/config/firewall
config rule
        option src              wan
        option proto            tcp
        option dest_port        8080
        option target           ACCEPT

然后重启防火墙 /etc/init.d/firewall restart,就可以了。

外网访问摄像头的时候,如果看视频可能速度会跟不上,可以只看截屏。
http://192.168.1.1:8080/?action=snapshot
需要将192.168.1.1替换成路由器说使用的公网IP地址

3. 配置用户名和密码

mjpg-streamer 还可以使用用户名和密码来**访问。
修改 /etc/init.d/mjpg-streamer 中的
         [ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port" &

         [ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port -c user:pass" &

最后添加的部分就是用户名和密码,中间用冒号分割。重新启动mjpg-streamer,保证配置生效。
/etc/init.d/mjpg-streamer restart

欢迎访问俺的网站:{:soso_e157:}{:soso_e121:}{:soso_e157:}http://www.heartiot.com/ {:soso_e157:}{:soso_e182:}{:soso_e157:}








回复

使用道具 举报

发表于 2014-7-24 10:46:54 | 显示全部楼层
good,mark一下
回复 支持 反对

使用道具 举报

发表于 2014-10-22 22:23:21 | 显示全部楼层
mark 测试一下行不行
回复 支持 反对

使用道具 举报

发表于 2015-11-19 12:52:35 | 显示全部楼层
感谢分享。早看到的话也省着绕圈子了
请教个问题,我在CB3下使用mjpegstreamer时发现2个CPU中的一个使用率居高不下,请问有什么好的解决办法吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-31 14:54:03 | 显示全部楼层
ForrestSun 发表于 2015-11-19 12:52
感谢分享。早看到的话也省着绕圈子了
请教个问题,我在CB3下使用mjpegstreamer时发现2个CPU中的一个使用率 ...

mjpg应该不支持多核
回复 支持 反对

使用道具 举报

发表于 2016-2-27 15:36:52 | 显示全部楼层
版主,想问一下怎样才可以实现mjpg的录制视频?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-4-20 09:34 , Processed in 0.028034 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部