libusb + libuvc 环境搭建

简介: libusb + libuvc 环境搭建

1.什么是libuvc ?


libuvc 是一个基于 host 端的跨平台的 uvc 开源库,小巧简洁。目前支持


  • h264/mjpeg/yuv


  • 完整的 uvc 协议支持(控制/流)


  • 扩展单元协议自定义。


libuvc 是一个基于libusb 之上的协议,对于想学uvc的朋友,可以快速入手其源码。

本文对其源码,不做过多分析,只对其环境构建做详细介绍。


2.安装准备


  • cmake


  • git


  • gcc


  • pkg-config


  • libusb


  • libuvc


默认cmake/git/gcc/pkg-config 已安装,本文只对libusb 和libuvc 进行介绍。


3.安装 libusb


libusb 可以通过命令行安装,本文将从源码编译安装,方便大家后续在编的平台交叉编译。


3.1下载


git clone https://github.com/libusb/libusb.git


3.2 编译


  1. 安装第三方库


sudo apt-get install autoconf libtool 
libudev-dev


  1. 执行自动配置脚本,执行完成后会生成configure, INSTALL


./autogen.sh


  1. 配置configure(工具链, 安装路径,编译选项等) 见 INSTALL


PWD=`pwd`
rm -r $PWD/out
mkdir $PWD/out
PREFIX_DIR=$PWD/out
# 这里只配置了 安装路径
./configure --prefix=$PREFIX_DIR
# 编译及安装
make && make install


3 .编译成功如下:


image.png


4. libuvc


4.1 下载源码


git clone https://github.com/libuvc/libuvc.git


4.2 编译


  1. 打开README。可以看到安装编译目录


image.png


  1. 指定第三方库路径


1.1 libusb


# 设置环境变量,并将libusb-1.0.pc 复制到改路径下
export PKG_CONFIG_PATH=/home/wxyang/work/github/usb/3rd/pkgconfig
# 查找库(测试)
pkg-config --libs libusb-1.0
# 查找头文件(测试)
pkg-config --cflags libusb-1.0


1.2 opencv 由于opecv 依赖的三方库太多,故不从源码介绍安装,直接通过apt-get 安装


sudo apt-get install libopencv-dev python-opencv
# 测试
pkg-config --cflags opencv


image.png


1.3 libjpeg


可选,如果要支持mjpeg 编码需要安装,也可通过ffmpeg解码


  1. 编译安装


#!/bin/bash
PWD=`pwd`
rm $PWD/build
mkdir $PWD/build
mkdir $PWD/out
BUILD_DIR=$PWD/build
PREFIX_DIR=$PWD/out
cd BUILD_DIR
# 指定安装路径
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX_DIR -DBUILD_TEST=ON -DBUILD_EXAMPLE=ON ..
# 这里只配置了 安装路径
make && make install
~


image.png


5. 测试


  1. 修改 makefile


image.png


  1. 将编好的libuvc库 放到指定的位置并设置好环境变量 PKG_CONFIG_PATH


  • 3rd/pkgconfig 下放编译好的.pc 便于pkg-config 能找到


  • libuvc.pc 里面指定了真正的库文件目录


  • testuvc 里面是测试simple ,直接从libuvc里面拷贝一个例子


  • 注意使用pkg-congfig 默认是动态链接,如果想要镜头链接,将指定库文件里面的动态库全部删掉,就会自动静态链接。


image.png


6. 总结


本文记录一下在构建libuvc 的时候,所遇到的一些坑.整个过程下来,如果一个人折腾还是挺花时间。同时回顾一下第三库的构建过程,方便读者快速在其他平台编译。

相关文章
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 生成并更新内核模块的依赖 depmod命令 使用指南
【Shell 命令集合 系统设置 】Linux 生成并更新内核模块的依赖 depmod命令 使用指南
384 0
|
Java API Android开发
安卓开发app 调用usb 摄像头 需要用到哪个库
在安卓开发中,调用USB摄像头常常使用libuvc库,这是一个跨平台处理USB视频设备的库。有多个基于libuvc的开源项目简化了在安卓上的使用,如UVCCamera和Android EasyCap UVC。例如,UVCCamera提供了一个更简单的接口来访问USB摄像头,并且可以在Jetpack Compose中显示预览。开发者可以参考官方文档、开源项目以及相关教程和资源来学习和实现这一功能。
|
编解码 Linux 计算机视觉
python 调用ffmpeg使用usb摄像头录制视频,输出h264格式,自动获取摄像头的最佳帧率和最大画面尺寸
使用 Python 调用 FFmpeg 进行 USB 摄像头视频录制,需先确保安装 FFmpeg 和 Python 的 `subprocess` 模块。代码示例展示了如何自动获取摄像头的最佳帧率和最大分辨率,然后录制视频。首先通过 FFmpeg 列出摄像头格式获取信息,解析出帧率和分辨率,选择最优值。之后调用 FFmpeg 命令录制视频,设置帧率、分辨率等参数。注意 `/dev/video0` 是 Linux 的摄像头设备路径,Windows 系统需相应调整。代码中未直接实现自动获取最佳参数,通常需要借助其他库如 OpenCV。
|
程序员 Linux Android开发
libYuv编译
安卓使用NDK编译libYuv库
859 0
|
算法 网络协议 Linux
Linux模块文件编译到内核与独立编译成.ko文件的方法
Linux模块文件编译到内核与独立编译成.ko文件的方法
4445 0
|
编解码 Linux 数据格式
UVC 批量传输技术探讨
UVC 批量传输技术探讨
8741 0
|
编解码 C++
QT 调用USB免驱摄像头
QT 调用USB免驱摄像头
737 0
|
Ubuntu
USB摄像头设置采集亮度和对比度
USB摄像头设置采集亮度和对比度
808 0
USB摄像头设置采集亮度和对比度
|
Unix Linux API
开源库介绍:libusb 及其使用
开源库介绍:libusb 及其使用
6563 0
开源库介绍:libusb 及其使用
|
物联网 人机交互 数据格式
[资料]蓝牙开发
[资料]蓝牙开发
289 0