Mjpg_Streamer 的移植

1. 移植mjpg-streamer

    a.1 移植libjpeg

        tar zxf libjpeg-turbo-1.2.1.tar.gz
        cd libjpeg-turbo-1.2.1
        ./configure --host=arm-linux --prefix=/work/projects1/mjpeg-stream/libjpeg-turbo-1.2.1/tmp
        make
        make install
        cd tmp/lib
        cp *so* /work/nfs_root/fs_mini_mdev_new/lib/ -d
       
    注意:文件体统   
        视频使用的是fs_mini_mdev_new_auto_wifi_ap.tar.bz2,因为自己制作过文件系统,暂时使用的是自己的。
   
 

   a.2 移植mjpg-streamer

            tar zxf mjpg-streamer-r63.tar.gz
            cd mjpg-streamer-r63
           
            a.2.1修改所有的Makefile
            vim Makefile            //顶层
                 将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc

            cd plugins/input_gspcav1
            vim Makefile
                将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc
           
            cd plugins/input_testpicture
            vim Makefile
                将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc
                    
            cd /plugins/input_uv
            vim Makefile
                将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc
            cd plugins/output_autofocus
            vim Makefile
                将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc
            cd plugins/output_file
            vim Makefile
                将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc
            cd plugins/output_http
            vim Makefile
                将:
                     CC = gcc
                 改为:
                     CC = arm-linux-gcc
             也就是将plugins 目录下面的所有的子目录的Makefile 全部进行修改
       
       

a.2.2 plugins/input_uvc 里面  修改

                cd plugins/input_uvc
                vim Makefile
                将:
                    CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
                修改为:
                    CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /work/projects1/mjpeg-stream/libjpeg-turbo-1.2.1/tmp/include
                                        添加的这个是编译libjpeg 库生成的头文件。
                将:
                    input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
                                    $(CC) $(CFLAGS) -ljpeg -o [email protected] input_uvc.c v4l2uvc.lo
                                    jpeg_utils.lo dynctrl.lo
                修改为:
                input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
                    $(CC) $(CFLAGS) -ljpeg -L /work/projects1/mjpeg-stream/libjpeg-turbo-1.2.1/tmp/lib
                    -o [email protected] input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
                        //添加了-L /work/projects1/mjpeg-stream/libjpeg-turbo-1.2.1/tmp/lib  指明库文件的位置

                回到顶层目录:make                        生成mjpg_streamer  这个应用程序和很多的.so 文件
               
                cp mjpg_streamer /work/nfs_root/fs_mini_mdev_new/bin/
                cp *so* /work/nfs_root/fs_mini_mdev_new/lib/ -d
 

  a.3  使用

                内核:
                    1.添加UVC
                    cp config_ok  .config
                    make menuconfig
                        <*> Multimedia support  ---> 
                             <*>   Video For Linux
                             [*]   Video capture adapters (NEW)  ---> 
                             [*]   V4L USB devices (NEW)  --->
                                     <*>   USB Video Class (UVC) 
                    执行: make uImage
                // 因为使用的是百问网的制作的USB 摄像头,所以,必须按照第二课1.1.9 视频修改UVC 驱动,修改完在make uImage
                        将修改的好的uvc_video.c 和uvc_driver.c 拷贝到/linux-3.4.2/drivers/media/video/uvc 替换掉
                // 因为百问网的摄像头的特殊性才需要修改,否则是不用修改的
               
                // 配置内核,使其支持 USB 总线驱动,如下
                    Device Drivers --->
                        [*] USB support --->
                        {*} Support for Host-side USB
                        [*] USB device filesystem (DEPRECATED)
                        [*] USB device class-devices (DEPRECATED)
                        <*> OHCI HCD support
                        <*> USB Mass Storage support
                       
                    [*] HID Devices --->
                        {*} Generic HID support
                        [*] /dev/hidraw raw HID device support
                       
                    SCSI device support --->
                    <*> SCSI device support
                    [*] legacy /proc/scsi/ support
                    <*> SCSI disk support
                    <*> SCSI tape support
                   
           

2.支持AR2917WIFI的:

                    make menuconfig
                  Symbol: ATH9K_HTC [=n]                                                                      
                  Type  : tristate                                                                           
                  Prompt: Atheros HTC based wireless cards support                                           
                    Defined at drivers/net/wireless/ath/ath9k/Kconfig:100                                    
                    Depends on: NETDEVICES [=y] && WLAN [=y] && ATH_COMMON [=n] && USB [=y] && MAC80211 [=m] 
                    Location:                                                                                
                      -> Device Drivers                                                                      
                        -> Network device support (NETDEVICES [=y])                                          
                          -> Wireless LAN (WLAN [=y])                                                        
                            -> Atheros Wireless Cards (ATH_COMMON [=n])
                    根据上面的依赖,还需要对ATH_COMMON 和 MAC80211 进行设置
                -> Networking support (NET [=y])                                                         
                -> Wireless (WIRELESS [=y]) 
                              <*>cfg80211 - wireless configuration API
                              <*>Generic IEEE 802.11 Networking Stack (mac80211)
                         
               -> Device Drivers                                                                        
             -> Network device support (NETDEVICES [=y])                                            
               -> Wireless LAN (WLAN [=y])                                                          
                 -> Atheros Wireless Cards (ATH_COMMON [=y]) 
                                  <*>   Atheros HTC based wireless cards support
            3.添加WIFI 固件
                mkdir  /work/nfs_root/fs_mini_mdev_new/lib/firmware
                cp htc_9271.fw /work/nfs_root/fs_mini_mdev_new/lib/firmware
       
        文件系统:
                    使用的是制作好的,包含众多WIFI应用程序的fs_mini_mdev_new_auto_wifi_ap.tar.bz2
        运行:   
                二合一摄像头
                mjpg_streamer -i "input_uvc.so -f 10 -r 320*240" -o "output_http.so -w www"
               
                一般摄像头
                mjpg_streamer -i "input_uvc.so -f 10 -r 320*240 -y" -o "output_http.so -w www"
               
                二合一摄像头
                mjpg_streamer -i "input_uvc.so -f 10 -r 640*480" -o "output_http.so -w www"
               
                一般摄像头
                mjpg_streamer -i "input_uvc.so -f 10 -r 320*240 -y" -o "output_http.so -w www"
       
       
        在火狐浏览器上面执行:   
            http://202.193.53.83:8080/?action=stream
                        // 谷歌、360急速浏览器都是失败的,
                                    
                        
        mjpg_streamer -i "input_uvc.so -f 10 -r 320*240 -y" -o "output_http.so -w www"
            -i : 指定输入的插件。可见指定了input_uvc.so 这个插件,作为输入的驱动。因为我们使用的是UVC摄像头。                   
            -o :指定输出的插件。    output_http.so这个插件。
            ---------------------------------------------------------------
             Help for input plugin..: UVC webcam grabber
             ---------------------------------------------------------------
             The following parameters can be passed to this plugin:
            
             [-d | --device ].......: video device to open (your camera)
             [-r | --resolution ]...: the resolution of the video device,
                                      can be one of the following strings:
                                      QSIF QCIF CGA QVGA CIF VGA
                                      SVGA XGA SXGA
                                      or a custom value like the following
                                      example: 640x480
             [-f | --fps ]..........: frames per second
             [-y | --yuv ]..........: enable YUYV format and disable MJPEG mode
             [-q | --quality ]......: JPEG compression quality in percent
                                      (activates YUYV format, disables MJPEG)
             [-m | --minimum_size ].: drop frames smaller then this limit, useful
                                      if the webcam produces small-sized garbage frames
                                      may happen under low light conditions
             [-n | --no_dynctrl ]...: do not initalize dynctrls of Linux-UVC driver
             [-l | --led ]..........: switch the LED "on", "off", let it "blink" or leave
                                      it up to the driver using the value "auto"

时间: 2024-08-09 16:25:27

Mjpg_Streamer 的移植的相关文章

mjpg-stream的移植

MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名. MJPEG 全名为 "Motion Joint Photographic Experts Group",是一种视频编码格式, Motion JPEG技术常用与闭合电路的电视摄像机的模拟视频信号"翻译"成视频流,并存储在硬盘上.典型的应用如数字视频记录器等.MJPEG不像MPEG,不使用帧间编码,因此用一个非线性编辑器就很容易编辑.MJPEG的压缩算法与MPEG一脉相承,功能很强大,

【原创】IP摄像头技术纵览(五)---网络摄像头初试—mjpg-streamer移植与部署

[原创]IP摄像头技术纵览(五)-网络摄像头初试-mjpg-streamer移植与部署 本文属于<IP摄像头技术纵览>系列文章之一: Author: chad Mail: [email protected] 1.vgrabbj.spacview.Luvcview.mjpg-streamer评测对比 vgrabbj-0.9.6是基于v4l1设计的,与v4l2的API差别很大,该软件已经没有使用或参考价值. spcaview 也相当古老,并且调用了SDL库,不适合嵌入式系统,不建议研究. 什么是S

【Windows10&nbsp;IoT开发系列】API&nbsp;移植工具

原文:[Windows10 IoT开发系列]API 移植工具 Windows 10 IoT Core 中是否提供你的当前 Win32 应用程序或库所依赖的 API? 如果不提供,是否存在可使用的等效 API? 此工具可以为你回答这些问题,并协助你将你的当前 Win32 应用程序和库迁移到 Windows IoT Core. Windows 10 IoT 核心版 API 移植工具可在 ms-iot/iot-utilities github 存储库中找到.下载存储库 zip 并将 IoTAPIPor

LEDAPS1.3.0版本移植到windows平台----HuCsm云掩膜模块

这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuCsm是将LEDAPS项目中的TM/ETM+大气校正流程系列算法中的云掩膜模块由linux系统移植到windows下的产物,代码本身改动不大,使用接口不变. 包含文件: HuCsm.exe hd423m.dll hm423m.dll 编译程序需要包含的静态库有: gctp.lib hdfeos.lib hd423m.lib hm423m

学习者移植NES

http://blog.csdn.net/zerokkqq/article/details/52964249 http://bbs.eeworld.com.cn/thread-415692-1-1.html 上面这个是我移植参考他人的文件.手把手教你移植XXX,多牛逼. 作为承前启后的一件事,你要搞清楚接下来要做什么.别傻了,我们不可能知道之后每一个细节会怎样,所以这里的搞清楚也不是面面俱到,记得,不要总是急着一口气完成任务,之后我们的道路应该是一步一个脚印 1.我总是三分钟热度,希望这次不要断

基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)

作者信息 作者: 彭东林 邮箱:[email protected] QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4

基于tiny4412的Linux内核移植 -- PWM子系统学习(八)

作者信息 作者: 彭东林 邮箱:[email protected] QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4

Cocos移植到Android的一些问题-SQLite3数据库移植问题

首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一种是从SQLite官网下载源代码拷贝的工程中.第一种方法配置起来比较麻烦,关键是Cocos2d-x提供的SQLite3库只是Win32没有其它平台的,目录结构如下所示.<游戏工程目录>\cocos2d\external\sqlite3│  Android.mk│├─include│      sq

ARM板ok6410移植qt4.84+opencv2.4.9初步成功

先上图,有图有真相,当课题重新回归到嵌入式搭载的老问题上时,我还一度各种担心,发现最新的A9板4412能用Android了,还想着偷懒买块现成的只做最顶层开发就好,结果找遍工业相机厂家没见到有提供Android驱动的,一了解才明白,Android驱动是基于linux驱动的貌似,于是乎,又尝试着回归到移植opencv到嵌入式linux的老路上来. 想当初,零linux基础的我对着借来的6410各种被蹂躏,历时1个月仅仅是搭建了能用板子自带的qt4.7.1库编写界面程序而已.那次各种编译错误,各种零