1. 确认USB摄像头设备节点 主板接上USB摄像头后,使用以下命令查看USB摄像头节点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 linaro@linaro-alip:/home$ grep '' /sys/class/video4linux/video*/name /sys/class/video4linux/video0/name:stream_cif_mipi_id0 /sys/class/video4linux/video10/name:rkcif_tools_id2 /sys/class/video4linux/video11/name:stream_cif_mipi_id0 /sys/class/video4linux/video12/name:stream_cif_mipi_id1 /sys/class/video4linux/video13/name:stream_cif_mipi_id2 …… /sys/class/video4linux/video35/name:rkisp-input-params /sys/class/video4linux/video36/name:AC_2019053011080005: ZH-0309 /sys/class/video4linux/video37/name:AC_2019053011080005: ZH-0309 /sys/class/video4linux/video3/name:stream_cif_mipi_id3 /sys/class/video4linux/video4/name:rkcif_scale_ch0 /sys/class/video4linux/video5/name:rkcif_scale_ch1 /sys/class/video4linux/video6/name:rkcif_scale_ch2 /sys/class/video4linux/video7/name:rkcif_scale_ch3 /sys/class/video4linux/video8/name:rkcif_tools_id0 /sys/class/video4linux/video9/name:rkcif_tools_id1
可以看到USB摄像头对应的设备节点是/dev/video36。
2. 查看USB摄像头支持的图像格式 1 2 3 4 5 6 7 8 9 10 11 12 13 linaro@linaro-alip:/home$ v4l2-ctl -d /dev/video36 --get-fmt-video Format Video Capture: Width/Height : 1024/576 Pixel Format : 'MJPG' (Motion-JPEG) Field : None Bytes per Line : 0 Size Image : 1180237 Colorspace : Default Transfer Function : Default (maps to Rec. 709) YCbCr/HSV Encoding: Default (maps to ITU-R 601) Quantization : Default (maps to Full Range) Flags : linaro@linaro-alip:/home$
可以看到该USB摄像头支持MJPG格式,1024*576分辨率。
3. 查看gstreamer支持的mpp编/解码器 1 2 3 4 5 6 7 linaro@linaro-alip:/home$ gst-inspect-1.0 | grep mpp typefindfunctions: audio/x-musepack: mpc, mpp, mp+ rockchipmpp: mppjpegdec: Rockchip's MPP JPEG image decoder rockchipmpp: mppvideodec: Rockchip's MPP video decoder rockchipmpp: mppjpegenc: Rockchip Mpp JPEG Encoder rockchipmpp: mpph264enc: Rockchip Mpp H264 Encoder linaro@linaro-alip:/home$
4. 推流到电脑上(USB摄像头) RK3562主板将USB摄像头图像推流到电脑上显示。
4.1. 主板安装gst-rtsp插件 1 2 sudo apt-get update sudo apt install -y gstreamer1.0-rtsp gstreamer1.0-libav
mediamtx是一个rtsp server程序。
1 2 3 4 5 6 7 8 9 10 11 12 root@ido:/home/ido# tar -xvf mediamtx_v1.1.1_linux_arm64v8.tar.gz mediamtx mediamtx.yml LICENSE root@ido:/home/ido# ./mediamtx & [1] 1315 root@ido:/home/ido# 2023/10/20 02:56:04 INF MediaMTX v1.1.1 2023/10/20 02:56:04 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP) 2023/10/20 02:56:04 INF [RTMP] listener opened on :1935 2023/10/20 02:56:04 INF [HLS] listener opened on :8888 2023/10/20 02:56:04 INF [WebRTC] listener opened on :8889 (HTTP) 2023/10/20 02:56:04 INF [SRT] listener opened on :8890 (UDP)
mediamtx GitHub链接:https://github.com/bluenviron/mediamtx
4.3. 主板开始RTSP推流 查看主机的IP地址:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 root@linaro-alip:~# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.115 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::63fb:c213:5a00:4d94 prefixlen 64 scopeid 0x20<link> ether 2a:8e:6d:fa:ec:ff txqueuelen 1000 (Ethernet) RX packets 46105 bytes 29583475 (28.2 MiB) RX errors 0 dropped 448 overruns 0 frame 0 TX packets 303547 bytes 399907829 (381.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 71 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 284457 bytes 396474883 (378.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 284457 bytes 396474883 (378.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
使用gst-launch-1.0工具进行RTSP推流:
1 2 3 4 gst-launch-1.0 v4l2src device=/dev/video36 \ ! image/jpeg ! avdec_mjpeg ! videoconvert \ ! video/x-raw,height=576,width=1024,frame=30/1,format=NV12 ! mpph264enc \ ! rtspclientsink location=rtsp://127.0.0.1:8554/stream
4.4. 电脑播放 电脑打开VLC软件,点击【媒体】-> 【打开网络串流】-> 【网络】,并输入主板RTSP推流地址的端口,然后点击播放:
(VLC软件下载地址:Downloads - VideoLAN )
点击播放按钮后,即可看到USB摄像头的图像了:
5. 推流到电脑上(mipi摄像头) 主板配置了2路摄像头,一路为GC8034(J18,3264x2448),另一路为OV13855(J20,4224x3136),两路摄像头对应的设备节点如下:
GC8034
/dev/video22
OV13855
/dev/video29
5.1.1. 检测摄像头 1 2 3 4 5 6 root@linaro-alip:/# media-ctl -p -d /dev/media0 | grep gc8034 <- "m01_f_gc8034 2-0037":0 [ENABLED] - entity 63: m01_f_gc8034 2-0037 (1 pad, 1 link) root@linaro-alip:/# media-ctl -p -d /dev/media1 | grep ov13855 <- "m00_b_ov13855 1-0010":0 [ENABLED] - entity 63: m00_b_ov13855 1-0010 (1 pad, 1 link)
5.1.2. 主板开始RTSP推流(OV13855) 使用gst-launch-1.0工具进行RTSP推流:
1 2 3 gst-launch-1.0 v4l2src device=/dev/video29 ! videoconvert\ ! video/x-raw,height=1080,width=1920,frame=30/1,format=NV12\ ! mpph264enc ! rtspclientsink location=rtsp://127.0.0.1:8554/stream
参考USB摄像头的步骤,推流至电脑播放:
5.1.3. 主板开始RTSP推流(GC8034) 使用gst-launch-1.0工具进行RTSP推流:
1 2 3 gst-launch-1.0 v4l2src device=/dev/video22 ! videoconvert \ ! video/x-raw,height=1080,width=1920,frame=30/1,format=NV12\ ! mpph264enc ! rtspclientsink location=rtsp://127.0.0.1:8554/stream
参考USB摄像头的步骤,推流至电脑播放: