查看链路拓扑结构
media-ctl -d /dev/media0 -p //目录也可能是/dev/media1
可以查看到RK628的设备是/dev/v4l-subdev3 分辨率和帧模式:UYVY8_2X8/1920x1080@10000/300000
查看链路情况,并进行配置,如果链路正确则省略
media-ctl -d /dev/media0 -l \
'"m00_b_rk628-csi rk628-csi":0->"rockchip-csi2-dphy0":0 [1]'
media-ctl -d /dev/media0 -l \
'"rockchip-mipi-dphy-rx":1->"rkisp-isp-subdev":0 [1]'
media-ctl -d /dev/media0 -l '"rkisp-input-params":0->"rkisp-isp-subdev":1 [1]'
media-ctl -d /dev/media0 -l '"rkisp-isp-subdev":2->"rkisp_mainpath":0 [1]'
media-ctl -d /dev/media0 -l '"rkisp-isp-subdev":2->"rkisp_selfpath":0 [1]'
media-ctl -d /dev/media0 -l '"rkisp-isp-subdev":3->"rkisp-statistics":0 [1]'
配置分辨率
media-ctl -d /dev/media0 \
--set-v4l2 '"rkisp-isp-subdev":0[fmt:UYVY2X8/1920x1080]'
media-ctl -d /dev/media0 \
--set-v4l2 '"rkisp-isp-subdev":0[crop:(0,0)/1920x1080]'
media-ctl -d /dev/media0 \
--set-v4l2 '"rkisp-isp-subdev":2[fmt:UYVY2X8/1920x1080]'
media-ctl -d /dev/media0 \
--set-v4l2 '"rkisp-isp-subdev":2[crop:(0,0)/1920x1080]'
查看配置结果
media-ctl -d /dev/media0 -p
抓取图像YUV文件
v4l2-ctl --verbose -d /dev/video0 \
--set-fmt-video=width=1920,height=1080,pixelformat='UYVY' \
--stream-mmap=4 --stream-skip=5 --stream-count=10 \
--stream-to=/data/rk628_1920x1080.yuv --stream-poll
获取图像数据流
v4l2-ctl --verbose -d /dev/video0 \
--set-fmt-video=width=1920,height=1080,pixelformat='UYVY' \
--stream-mmap=4 \
--set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080
pixelformat属性根据实际配置而定,具体支持哪些,使用如下命令查看
v4l2-ctl -d2 --list-formats-ext
使用ffmpeg查看YUV文件
将YUV文件导入到linux系统或者windows系统中。如下是UBUNTU系统
ffplay -f rawvideo -video_size 1920x1080 -pix_fmt uyvy422 rk628_1920x1080.yuv
关于pix_fmt参数可以使用如下命令查看,并找到与图像对应的
ffmpeg -pix_fmts
抓取YUV时,出现如下报错,可以试试插拔信号源,或者查看dts中rk628_csi下plugin-det-gpios和hpd-output-inverted的配置
m00_b_rk628-csi rk628-csi: rk628_hdmirx_phy_setup hdmi rxphy lock failed, retry:2