• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Linux系统mjpg_streamer流媒体移植摄像头驱动移植

武飞扬头像
海泊
帮助1

一、mjpg-streamer移植

主机环境 :ubuntu 14.04

编译器:arm-none-linux-gnueabi-gcc

开发板:A9

移植系统:Linux3.14

摄像头:USB摄像头

1、MJPG-stream的移植需要jpeg库,所以必须先移植jpeg库,

源码下载︰Jpeg源码包:http:// www.ijg.org/files/jpegsrc.v8b.tar.gz

MJPG-streamer源码包:http://sourceforge.net/projects/mjpg-streamer/

  1. jpeg库的安装

<1>解压

tar -xvf jpegsrc.v8b.tar.gz

<2>终端上配置编译

./configure --host=arm-none-linux-gnueabi --prefix=/home/linux/workdir/fs4412-bak/camera/jpeg-install

这里的--host=交叉开发工具链前缀--prefix=编译完之后,安装的路径

<3>编译

make

<4>安装

make install

安装成功之后,在--prefix参数指定的路径下,可以看到如下内容:

学新通

2、mjpg-stramer源码移植

<1>解压

tar -xvf mjpg-streamer-r63.tar.gz

<2>修改mjpg-streamer-r63源码顶层目录下的Makefile

学新通

<2>修改对应插件下的Makefile

这里只使用了input_uvc和output_http两个插件,所以只需要修改这两个插件的Makefile。plugins/input_uvc/Makefile修改如下:

学新通

plugins/output_http/Makefile修改如下:

学新通

<3>编译

make的时候,会提示fatal error: linux/videodev.h: No such file or directory这样的错误,找到对

应的文件,这个文件中包含的#include<linux/videodev.h>修改成#include <linux/videodev2.h>就可以了。

编译成功之后,效果如下:

学新通

此时,已经完成了mjpeg-stramer源码的编译,接下来我们把它拷贝到开发板上的文件系统中,最终在开发板上运行我们的应用程序。笔者这里开发板启动的时候,是通过NFS的方式挂载文件系统的。我们在开发板的文件系统中,新建一个camera目录,拷贝以下文件到camera目录下:

学新通

start.sh是运行应用程序的脚步文件

www目录存放的是一个网页,这个网页可以通过网络的方式在浏览器上显示

input uvc.so插件库,完成的是从摄像头中采集数据

ouput http.so插件库,完成的是将摄像头采集的数据通过http协议传输到客户端

mjpg stremaer就是我们需要运行的应用程序,它在运行的时候,会加载input_uvc.so和ouput_ http.so

同时我们在将jpeg库的lib文件夹中的库文件拷贝到我们挂载的文件系统中。(拷贝到lib文件夹下)

学新通

在A9平台,摄像头采集出来的数据是YUYV格式的原始数据,是无法直接显示的,所以需要将YUYV格式转换成jpeg格式。这里我们只需要修改start.sh,告诉应用程序需要将YUYV格式数据转换成jpeg格式就可以了。修改如下:

学新通

二、USB摄像头驱动的移植(Linux3.14系统下操作)

1、修改设备树文件

$ vim arch/arm/boot/dts/exynos4412-fs4412.dts

添加如下内容:(末尾添加,大括号内)

usbphy: usbphy@125B0000 {

#address-cells = <1>;

#size-cells = <1>;

compatible = "samsung,exynos4x12-usb2phy";

reg = <0x125B0000 0x100>;

ranges;

clocks = <&clock 2>, <&clock 305>;

clock-names = "xusbxti", "otg";

usbphy-sys {

reg = <0x10020704 0x8 0x1001021c 0x4>;

};

};

ehci@12580000 {

status = "okay";

usbphy = <&usbphy>;

};

usb3503@08 {

compatible = "smsc,usb3503";

reg = <0x08 0x4>;

connect-gpios = <&gpm3 3 1>;

intn-gpios = <&gpx2 3 1>;

reset-gpios = <&gpm2 4 1>;

initial-mode = <1>;

};

  1. 配置内核

make ARCH=arm menuconfig

USB配置项

Device Drivers --->

[*] USB support --->

<*> EHCI HCD (USB 2.0) support

<*> EHCI support for Samsung S5P/EXYNOS SoC Series

<*> USB Mass Storage support

<*> USB3503 HSIC to USB20 Driver

USB Physical Layer drivers --->

<*> Samsung USB 2.0 PHY controller Driver

SCSI device support --->

<*> SCSI device support

<*> SCSI disk support

<*> SCSI generic support

USB摄像头配置项

Device Drivers --->

<*>Multimedia support --->

<*>cameras/video grabbers support

[*]Media USB Adapters --->

<*>USB Video Class (uvC)

[*]uvC input events device support

3、编译内核和设备树

make ARCH=arm CROSS_COMPILE=arm-linux- uImage

make ARCH=arm CROSS_COMPILE=arm-linux- dtbs

4、将生成的内核文件和设备树文件拷贝到开发板上运行 (笔者通过tftp文件传输协议挂载)

cp arch/arm/boot/uImage ../../tftpboot/

cp arch/arm/boot/dts/exynos4412-fs4412.dtb ../../tftpboot/

5、在开发板上运行start.ch文件

学新通

6、ubuntu上通过开发板的IP地址访问视频文件

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgjahbe
系列文章
更多 icon
同类精品
更多 icon
继续加载