【imx6ull】视频监控项目(usb摄像头+ffmepeg)

本文详述了在正点原子IMX6ULL开发板上配置UVC驱动、测试摄像头、使用v4l2进行应用编程以及移植FFmpeg的过程。通过插入USB摄像头并观察设备信息,确认驱动已成功编译。同时,介绍了如何将MJPEG图像转换为RGB565以适应显示屏,并提供了FFmpeg的移植脚本和运行命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

参考视频:
韦东山老师手把手带你从0开始自己做一个视频监控系统


1、总体方案介绍

这篇文章写的很好,很容易理解了,就不造轮子了
正点原子imx6ull开发板视频监控项目实战系列1: 总体方案介绍

2、配置v4l2驱动与UVC驱动

  1. 因为正点原子的内核源码默认没有开启,UVC设备类驱动,需要自己配置并编译
    在这里插入图片描述

  2. 插入usb摄像头,控制台输出设备信息,证明UVC驱动已经编译成功

    usb 1-1.3: New USB device found, idVendor=0c45, idProduct=64ab usb
    1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb
    1-1.3: Product: Integrated_Webcam_HD usb 1-1.3: Manufacturer: 170428-
    uvcvideo: Found UVC 1.00 device Integrated_Webcam_HD (0c45:64ab)
    input: Integrated_Webcam_HD as
    /devices/platform/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1.3/1-1.3:1.0/input/input3 usb 1-1.4: new high-speed USB device number 4 using ci_hdrc usb 1-1.4:
    New USB device found, idVendor=0bda, idProduct=8179 usb 1-1.4: New USB
    device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.4: Product:
    802.11n WLAN NIC usb 1-1.4: Manufacturer: Realtek

  3. 查看/dev/video*,有视频类设备文件,证明UVC驱动已经编译成功

3、v4l2应用编程测试摄像头

  1. 测试方案

    将从摄像头获取的图像投射到RGB566显示屏

  2. 移植libjpeg

    因为我的摄像头只支持图像格式:MJPEG,YUV422,而显示屏只支持RGB565,所以需要使用工具将MJPEG转码为RGB565。

  3. v4l2+framebuf应用编程

    特此将libjpeg+v4l2+frambuff+移植过程分享出来

4、ffmepg移植

  1. 简介

    正点原子imx6ull开发板视频监控项目实战系列3:
    ffmpeg

    这篇文章介绍了ffmepeg的用途和对摄像头的拉流方式

  2. 移植
    因为正点原子的文档没有对ffmpeg详细移植步骤,在网络上找了好几个移植描述,但是并不正确,只有这个才是适合我的板子的.
    以下是我做的运行脚本,可直接拷走使用,切记16,17行内容不能分行分行运行,回报错误
    FFmpeg移植-迅为IMX6ULL开发板

      1 #!/bin/bash
      2 ./configure \
      3 --cross-prefix=arm-linux-gnueabihf- \
      4 --enable-cross-compile \
      5 --target-os=linux \
      6 --cc=arm-linux-gnueabihf-gcc \
      7 --arch=arm \
      8 --prefix=/home/sheldon/linux/tool/ffmpeg-install \
      9 --enable-shared \
     10 --disable-static \
     11 --enable-gpl \
     12 --enable-nonfree \
     13 --disable-ffplay \
     14 --enable-swscale \
     15 --enable-pthreads \
     16 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-x86asm \
     17 --disable-stripping --enable-libx264 \
     18 --extra-cflags=-I/home/sheldon/linux/tool/x264_install/include/ \
     19 --extra-ldflags=-L/home/sheldon/linux/tool/x264_install/lib/ --extra-libs=-ldl
    
    

总结

### 关于韦东山 IMX6ULL 设备连接网络的方法 #### NFS 挂载配置 为了实现 IMX6ULL 开发板通过网络文件系统 (NFS) 来加载根文件系统,可以按照以下方式进行操作。首先,在主机上安装 NFS 服务器软件包 `nfs-kernel-server`[^2]。接着,创建用于共享的目录并设置权限: ```bash sudo mkdir /var/nfs/general sudo chmod -R 777 /var/nfs/general ``` 编辑 `/etc/exports` 文件来指定要导出的目录及其访问权限: ```plaintext /var/nfs/general *(rw,sync,no_subtree_check) ``` 重启 NFS 服务使更改生效: ```bash sudo systemctl restart nfs-kernel-server ``` 在开发板端修改网卡接口配置文件 `/etc/network/interfaces` 中的内容如下所示[^3]: ```plaintext auto eth0 iface eth0 inet static address 192.168.5.9 netmask 255.255.255.0 gateway 192.168.5.1 ``` 确保开发板能够成功获取 IP 地址并与主机通信。 #### 静态IP地址分配 除了使用 DHCP 动态分配外,还可以手动设定静态 IP 地址以便更稳定地管理网络环境。上述提到的 `/etc/network/interfaces` 的配置即为此目的而设。 #### U-boot 网络启动支持 对于某些特定场景可能需要用到 TFTP 协议下载内核镜像至内存运行,则需保证 u-boot 已经编译启用了相应的网络功能模块,并且正确设置了服务器 IP 和本地 IP 参数等信息[^1]。 ```bash setenv serverip 192.168.5.1 setenv ipaddr 192.168.5.9 saveenv bootp tftp 0x80800000 zImage bootm 0x80800000 ``` 以上命令序列展示了如何利用 tftp 加载 Linux 内核的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值