1.准备工作


1.1.购置摄像头:

支持输出视频格式yuyv420、yuyv422或jpeg之一即可

1.2.路由器:

支持usb

1.3.注意:

如果购置的摄像头输出的视频格式是yuyv420或者yuyv422,会让FireWRT的CPU消耗30-60%,虽然FireWRT是双核880MHz的CPU但是也会出现视频卡顿现象。

如果购置的摄像头输出视频格式只是jpeg,则不存在上述问题。

1.4安装VLC播放器

下载地址:

        http://www.videolan.org/1.5连接示意图


[RTP+DIY] FireWRT远程视频监控-1_FireWRT

 



2.编译OpenWrt


依赖的库文件:


libjpeg 

libpthread 

kmod-video-core 

kmod-video-uvc 

kmod-usb-core 

kmod-usb2



2.1 在package下新建文件rtp2jpeg


    1.  cd rtp2jpeg
    2.  vim Makefile

    可以直接在Makefile中写上这些依赖


      1.  #
      2.  # Copyright (C) 2010-2013 hua.shao@mediatek.com
      3.  #
      4.  # Ralink Property Software.
      5.  #
      6.  
      7.  include $(TOPDIR)/rules.mk
      8.  
      9.  PKG_NAME:=rtp2jpeg
      10.  PKG_RELEASE:=1
      11.  
      12.  PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
      13.  
      14.  
      15.  include $(INCLUDE_DIR)/package.mk
      16.  
      17.  define Package/rtp2jpeg
      18.        SECTION:=firefly
      19.        CATEGORY:=rtp2jpeg
      20.        TITLE:= rtp2jpeg
      21.        <font color="Red">DEPENDS:=+libjpeg +libpthread +kmod-video-core +kmod-video-uvc +kmod-usb-core +kmod-usb2</font>
      22.  endef
      23.  
      24.  define Package/rtp2jpeg/description
      25.    An program to config rtp2jpeg.
      26.  endef
      27.  
      28.  define Build/Prepare
      29.              mkdir -p $(PKG_BUILD_DIR)
      30.              $(CP) -r ./src/* $(PKG_BUILD_DIR)/
      31.  endef
      32.  
      33.  define Build/Configure
      34.  endef
      35.  
      36.  define Package/rtp2jpeg/install
      37.              $(INSTALL_DIR) $(1)/usr/bin
      38.              $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/camera_encode $(1)/usr/bin #应用程序
      39.  endef
      40.  $(eval $(call BuildPackage,rtp2jpeg))
        复制代码


      注意:如果是复制以上的Makefile请注意tab。


      视频采集输出代码下载


      本帖隐藏的内容

      git clone src



      如果编译出错,可能是src目录下少了一个bin文件目录


      1. mkdir src/bin

      复制代码

      执行


      1.  $ make ./package/rtp2jpeg/compile


      复制代码



      [RTP+DIY] FireWRT远程视频监控-1_FireWRT_02

       


      拷贝到路由器上



      2.2直接编译到固件中


      1. make menuconfig 

      复制代码

      [RTP+DIY] FireWRT远程视频监控-1_Linux_03

       


      选择上rtp2jpeg


      1. make V=99 -j4

      复制代码 烧写固件



      3.rtp2jpeg使用


      3.1 VLC使用


      在克隆的src代码中包含文件:mjpeg.sdp


      内容:

      1.  m=video 10000 RTP/AVP 26
      2.  a=rtpmap:26 JPEG/90000;
      3.  a=decode_buf=300;
      4.  a=framerate:25
      5.  c=IN IP4 local

      复制代码 10000是端口号


      ubuntu使用:


      右键点击:mjpeg.sdp打开用VLC打开


      [RTP+DIY] FireWRT远程视频监控-1_Linux_04

       


      右键点击此界面的mjpeg.sdp,选择播放。



      3.2 OpenWrt rtp2jpeg程序使用


      从串口或者ssh,telent登录路由器


      编译好的二进制文件存放在了/usr/bin/下,名字为camera_encode


      [RTP+DIY] FireWRT远程视频监控-1_Linux_05

       


      插上USB摄像头,打印出的信息如下:


      [RTP+DIY] FireWRT远程视频监控-1_FireWRT_06

       


      正确在终端输入命令(VLC已经准备接收视频,输入的IP地址为PC电脑的IP一致):


      [RTP+DIY] FireWRT远程视频监控-1_FireWRT_07

       


      此时观测VLC播放器:


      [RTP+DIY] FireWRT远程视频监控-1_FireWRT_08

       


      播放成功。


      代码解释,请看下一章分析。