v4l2使用
v4l2使用
(1.)安装
# ubuntu
sudo apt install v4l-utils
# centos
sudo dnf install v4l-utils
# rpm
sudo rpm -i v4l-utils-1.16.7-4.el8.x86_64.rpm
(2.)常用命令
# 列出设备
v4l2-ctl --list-devices
# 列出某个设备支持的参数
v4l2-ctl -d /dev/video0 -l // dev/video0为设备名称
v4l2-ctl -d /dev/video0 --list-ctrls
# 获取某个控制参数的值
v4l2-ctl -d /dev/video0 --get-ctrl=brightness // dev/video0为设备名称
# 获取支持的编码格式
# v4l2-ctl --list-formats -d /dev/video4
# 设置免征额控制参数
v4l2-ctl -d /dev/video0 --set-ctrl=brightness=0 // set-ctrl=<name>=<value>
v4l2-ctl -d /dev/video0 --set-ctrl analogue_gain=240 // 增加图片亮度
# 预览支持的格式
v4l2-ctl --list-formats-ext --device /dev/video0
# 获取指定设备的所有信息
v4l2-ctl --all --device /dev/video0
# 增加曝光
v4l2-ctl -d /dev/video0 --set-ctrl exposure=3324 // exposure 4-3324
# 抓帧
v4l2-ctl -d /dev/video0 --set-fmt-video=width=800,height=600,pixelformat=NV12 --stream-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1
m-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1
# 测试画面
v4l2-ctl -d /dev/video0 --set-ctrl test_pattern=0
(3.)golang通过命令行读取采集设备
cmd := exec.Command("v4l2-ctl", "--set-fmt-video=width=640,height=480,pixelformat=1", "--stream-mmap", "--stream-count=1", "--stream-to=-")
// Create buffer to store output data
var out bytes.Buffer
cmd.Stdout = &out
// Execute command and capture any errors
err := cmd.Run()
if err != nil {
return nil, err
}
// 解析pts和dts
pts := binary.LittleEndian.Uint64(videoData[0:8])
dts := binary.LittleEndian.Uint64(videoData[8:16])
//其他golang v4l2库:github.com/thinkski/go-v4l2
相关链接
https://www.cnblogs.com/embedded-linux/articles/5994860.html
https://zhuanlan.zhihu.com/p/604324755
【励志篇】:
古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2022-06-10 unix socket 抓包
2022-06-10 leveldb查看工具
2022-06-10 git-submodule使用
2022-06-10 csdn复制问题
2021-06-10 golang不同环境的交叉编译