来源:AI开发日志公众号专辑「Build Your Own X With AI」
原文链接:https://mp.weixin.qq.com/s?__biz=MzUxMjg3MjE2OA==&mid=2247486196&idx=1&sn=d04c53870112ffaa56a42c5f129ea0d1&chksm=f95c9173ce2b1865081dfa22fe312258305bcc4866b30803484f0e871a0a0a4d6cdabf0d0320#rd
UVC H.264 采集与预览工具
一个基于 libuvc 的工具,用于从 UVC 摄像头采集 H.264 视频流,支持实时预览和手动控制保存功能。
截图
功能特点
实时预览
:通过 ffplay 低延迟显示 H.264 视频流
灵活保存
:按 s 键可随时开始/停止将视频保存为 output.h264
自动适配
:自动识别摄像头支持的分辨率和帧率
优雅控制
:按 q 键或 Ctrl+C 可安全退出程序,确保资源释放
依赖环境
硬件
:支持 UVC 标准且具备 H.264 编码功能的摄像头(如 VID=0603:8612 的设备)
软件
:
macOS 系统(已测试)
libuvc
:用于 UVC 设备通信
libusb-1.0
:USB 设备访问库
ffmpeg
:提供 ffplay 用于实时预览
安装依赖
安装 libuvc 和 libusb:
使用 Homebrew 安装
brew install libuvc libusb
安装 ffmpeg(用于预览):
brew install ffmpeg
编译与使用
编译程序
克隆或下载代码后进入目录
make # 编译生成可执行文件
启动实时预览
sudo make run # 需要 root 权限访问 USB 设备
操作说明
预览窗口
:程序启动后会自动弹出 ffplay 预览窗口
保存控制
:在终端按 s 键开始/停止保存视频(保存为 output.h264)
退出程序
:按 q 键或 Ctrl+C 退出
播放保存的文件
make play # 使用 ffplay 播放 output.h264
目录结构
.
├── uvc_h264_preview.c # 主程序代码
├── Makefile # 编译配置
└── README.md # 本说明文档
常见问题
设备找不到:
确保摄像头已正确连接并支持 UVC 标准
检查 USB 接口是否正常,尝试重新插拔设备
预览窗口不显示:
确认已安装 ffmpeg(ffplay 命令可正常运行)
检查摄像头是否真的支持 H.264 编码(程序会自动检测)
权限错误:
必须使用 sudo 运行程序,否则无权限访问 USB 设备
卡顿或延迟:
尝试降低分辨率(修改代码中 width 和 height 的默认值)
关闭其他占用 CPU/USB 带宽的程序
代码说明
核心逻辑:通过 libuvc 采集 H.264 流,通过管道传递给 ffplay 实现实时预览
回调函数:cb 函数处理每帧数据,同时用于预览和保存
键盘控制:独立线程监听 s(保存)和 q(退出)按键事件
资源管理:程序退出时会自动释放设备资源、关闭文件和管道,确保数据完整
通过此工具,可快速验证 UVC 摄像头的 H.264 采集功能,适合开发调试或简单录像场景。