作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,BSP开发
作者主页:一个平凡而乐于分享的小比特的个人主页
文章收录专栏:RV1106_LINUX,本专栏为本栏为RV1106_LINUX开发,学习记录
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖
Luckfox Pico Max适配的是 SC3336 3MP Camera (A) 摄像头,这款摄像头采用思特威SC3336感光芯片,支持3百万像素。具备高灵敏度,高信噪比低照度的性能,能够呈现更加细腻、色彩更加逼真的夜视全彩成像,更好地适应环境光线变化。当前推流仅适用于 buildroot系统。
1. 查看摄像头
1.首先连接摄像头,请确保连接正常后开机。系统将自动识别摄像头,注意接线不要接反了。
LuckFox PicoMax 开发板连接摄像头时,请确保摄像头排线的金属面朝向开发板芯片。
2.查看摄像头,若成功识别摄像头会生成 rkipc.ini 文件。
3.获取设备的 IP 地址
Luckfox Pico Max 默认 IP 为 172.32.0.93,网口ip为10.230.149.130
2. 配置RNDIS虚拟网口
1.Windows 安全中心—>防火墙和网络保护—>关闭防火墙。
2.配置 RNDIS 网卡的静态IP,打开设置—>高级网络设置—>更改适配器选项。
3.网卡一般是类似这样的名字Remote NDIS based nternet Sharing Device,右键属性。
4.双击 internet 协议版本(TCP/IPv4),IPV4地址设置为 172.32.0.100,避免和设备冲突。
3. 使用VLC media player 推流
-
下载并安装 VLC media player 。
-
打开 VLC media player 软件,在媒体—>打开网络串流
-
输入默认的 IP 地址:rtsp://172.32.0.93/live/0
-
也可以使用 eth0 的 IP地址串流: rtsp://10.230.149.130/live/0
-
点击播放,即可看到摄像头画面,可以旋转镜头来调焦
摄像头测试
4. V4L2-utils 工具包安装
V4L2-utils 是一组用于测试和配置 V4L2 设备的实用工具,它们通过命令行界面提供了对 V4L2 接口的访问。Luckfox SDK 的buildroot包中已经包含了 v4l2-utils软件包中的工具,但需要手动开启它,进入到/luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6下输入make menuconfig
,进入buildroot图形化界面菜单选项(注意:必须先将下载好的源码编译一次才会有/buildroot-2023.02.6)
在 buildroot 目录添加 V4L2,使用关键字"libv4l2"进行搜索。
根据路径使能V4L2-utils 工具包
注意libv4l和v4l-utils tools都要选上选上后,一定要保存再退出,继续输入
make ARCH=arm savedefconfig
cp .config ./configs/luckfox_pico_defconfig
然后重新编译,编译完成后会在/luckfox-pico/output下生成编译产物
output/
├── image
│ ├── download.bin ---------------- 烧录工具升级通讯的设备端程序,只会下载到板子内存
│ ├── env.img --------------------- 包含分区表和启动参数
│ ├── uboot.img ------------------- uboot镜像
│ ├── idblock.img ----------------- loader镜像
│ ├── boot.img -------------------- kernel镜像
│ ├── rootfs.img ------------------ kernel镜像
│ └── userdata.img ---------------- userdata镜像
└── out├── app_out --------------------- 参考应用编译后的文件├── media_out ------------------- media相关编译后的文件├── rootfs_xxx ------------------ 文件系统打包目录├── S20linkmount ---------------- 分区挂载脚本├── sysdrv_out ------------------ sysdrv编译后的文件└── userdata -------------------- userdata
将系统镜像烧录到开发板
5. v4l2-ctl使用
1.列出摄像头的设备
# v4l2-ctl --list-devices
rkisp-statistics (platform: rkisp):/dev/video19/dev/video20rkcif-mipi-lvds (platform:rkcif):/dev/media0rkcif (platform:rkcif-mipi-lvds):/dev/video0/dev/video1/dev/video2/dev/video3/dev/video4/dev/video5/dev/video6/dev/video7/dev/video8/dev/video9/dev/video10rkisp_mainpath (platform:rkisp-vir0):/dev/video11/dev/video12/dev/video13/dev/video14/dev/video15/dev/video16/dev/video17/dev/video18/dev/media1
rkisp_mainpath
:CSI摄像头
2.列出摄像头支持的格式
# v4l2-ctl --device=/dev/video11 --list-formats-ext
ioctl: VIDIOC_ENUM_FMTType: Video Capture Multiplanar[0]: 'UYVY' (UYVY 4:2:2)Size: Stepwise 32x16 - 2304x1296 with step 8/8[1]: 'NV16' (Y/CbCr 4:2:2)Size: Stepwise 32x16 - 2304x1296 with step 8/8[2]: 'NV61' (Y/CrCb 4:2:2)Size: Stepwise 32x16 - 2304x1296 with step 8/8[3]: 'NV21' (Y/CrCb 4:2:0)Size: Stepwise 32x16 - 2304x1296 with step 8/8[4]: 'NV12' (Y/CbCr 4:2:0)Size: Stepwise 32x16 - 2304x1296 with step 8/8[5]: 'NM21' (Y/CrCb 4:2:0 (N-C))Size: Stepwise 32x16 - 2304x1296 with step 8/8[6]: 'NM12' (Y/CbCr 4:2:0 (N-C))Size: Stepwise 32x16 - 2304x1296 with step 8/8
3.显示摄像头参数
# v4l2-ctl --device=/dev/video11 --list-ctrlsImage Processing Controlspixel_rate 0x009f0902 (int64) : min=0 max=1000000000 step=1 default=1000000000 value=101250000 flags=read-only, volatile
4.录制视频
#CSI 摄像头(需要先关掉自带的RKIPC)
killall rkipc
v4l2-ctl --device=/dev/video11 --set-fmt-video=width=640,height=480,pixelformat=NV12 --stream-mmap --stream-to=video50.yuv --stream-count=60
-device:
摄像头对应设备文件--set-fmt-video:
指定了宽高及 pxielformat (标识像素格式)--stream-mmap:
指定 buffer的类型为 mmap,即由内核分配的物理连续的或经过 iommu 映射的buffer--stream-to:
指定帧数据保存的文件路径--stream-count:
指定抓取的帧数,不包括–stream-skip丢弃的数量
5.如果出现“The pixelformat ‘UYVY’ is invalid” 字样说明摄像头不支持此格式,使用第二步的方法查看摄像头支持的格式
6.看到<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps 说明成功录制视频,可以成功生成video50.yuv视频文件
# killall rkipc
# v4l2-ctl --device=/dev/video11 --set-fmt-video=width=640,height=480,pixelforma
t=NV12 --stream-mmap --stream-to=video50.yuv --stream-count=60
<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<
# ls
bin lib32 oem run usr
data lib64 opt sbin var
dev linuxrc proc sys video50.yuv
etc media rockchip_test tmp
lib mnt root userdata
6. 显示视频
上面抓取的图片或者视频可以拷贝到 Ubuntu 中借助借助工具ffplay查看。ffplay
是 FFmpeg 工具包中的一个命令行工具,用于播放音频和视频文件。它基于 FFmpeg 库,支持广泛的音视频格式,能够在命令行中实时播放或预览多媒体内容。
首先我们要让虚拟机和开发板在同一网段下
可以看到笔者的虚拟机ip地址为192.168.10.100,因此我们开发板IP地址
进入root目录,创建一个文件夹与虚拟机的目录进行nfs挂载,将生成的video50.yuv文件拷贝到虚拟机的挂载目录中
1.播放视频
ffplay -video_size 640x480 -pixel_format nv12 -framerate 10 -i video50.yuv
-video_size size
设置帧尺寸 设置帧尺寸大小-pixel_format format
设置像素格式-framerate 10
: 设置视频的帧率为 10 帧/秒
2.转换视频格式
ffmpeg -f rawvideo -pixel_format yuyv422 -video_size 640x480 -framerate 30 -i video.yuv -c:v libx264 output.mp4
生成MP4格式,使用mpv命令进行播放
mpv output.mp4
摄像头MP4视频测试