RK356X Ubuntu 推流USB摄像头

本文适用与触觉智能所有rk356x ubuntu系统的主板。
ido-sbc3566基于瑞芯微rk3566研发的一款高性能低功耗的智能主板,采用四核a55,主频高达1.8ghz,专为个人移动互联网设备和aiot设备而设计,内置了多种功能强大的嵌入式硬件引擎,为高端应用提供了优异的性能,支持几乎全格式的4k编解码,内置3dgpu,能够完全兼容opengl es1.1/2.0/3.2、opencl2.0和vulkan1.0.特殊的mmu2d硬件引擎,此外,凭借其强大的兼容性,可以轻松地转换基于tensorflow/mxnet/pytorch/caffe等一系列框架的网络模型。
支持android,linux,openharmony,麒麟os等多种操作系统,可广泛应用于平板、教育平板、带屏音箱、词典笔、云终端、视频会议系统等安卓/linux类应用方案,以及其他带屏消费类、或轻量级ai应用场景。
产品规格书:ido-sbc3566-v1b 产品手册
01确认usb摄像头设备节点主板接上usb摄像头后,使用以下命令查看usb摄像头的设备节点:
root@ido:~# v4l2-ctl --list-devices
rkisp-statistics (platform: rkisp):
        /dev/video7
        /dev/video8
rkisp_mainpath (platform:rkisp-vir0):
        /dev/video0
        /dev/video1
        /dev/video2
        /dev/video3
        /dev/video4
        /dev/video5
        /dev/video6
        /dev/media0
ac_2019053011080005: zh-0305 (usb-xhci-hcd.4.auto-1):
        /dev/video9
        /dev/video10
        /dev/media1
video9即为usb摄像头的设备节点。02查看usb摄像头支持的图像格式
root@ido:~# v4l2-ctl -d /dev/video9 --list-formats-ext --all
...
...
...
ioctl: vidioc_enum_fmt
        type: video capture
[0]: 'mjpg' (motion-jpeg, compressed)
                size: discrete 1024x576
                        interval: discrete 0.033s (30.000 fps)
                size: discrete 1280x720
                        interval: discrete 0.033s (30.000 fps)
                size: discrete 896x504
                        interval: discrete 0.033s (30.000 fps)
                size: discrete 800x600
                        interval: discrete 0.033s (30.000 fps)
                size: discrete 640x480
                        interval: discrete 0.033s (30.000 fps)
        [1]: 'yuyv' (yuyv 4:2:2)
                size: discrete 1280x720
                        interval: discrete 0.100s (10.000 fps)
                size: discrete 1024x576
                        interval: discrete 0.067s (15.000 fps)
                size: discrete 896x504
                        interval: discrete 0.100s (10.000 fps)
                size: discrete 800x600
                        interval: discrete 0.067s (15.000 fps)
                size: discrete 640x480
                        interval: discrete 0.033s (30.000 fps)
可以看到,该usb摄像头支持mpeg格式最高1280x720@30fps输出。03推流到电脑上
rk356x主板将usb摄像头图像推流到电脑上显示。
3.1 主板安装gst-rtsp插件
apt install gstreamer1.0-rtsp
apt install gstreamer1.0-rtsp
3.2 主板安装mediamtx
mediamtx是一个rtsp server程序
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 0204 inf mediamtx v1.1.1
2023/10/20 0204 inf [rtsp] listener opened on :8554 (tcp), :8000 (udp/rtp), :8001 (udp/rtcp)
2023/10/20 0204 inf [rtmp] listener opened on :1935
2023/10/20 0204 inf [hls] listener opened on :8888
2023/10/20 0204 inf [webrtc] listener opened on :8889 (http)
2023/10/20 0204 inf [srt] listener opened on :8890 (udp)
3.3 主板开始rtsp推流
查看主板的ip地址:
root@ido:/home/ido# ifconfig
eth0: flags=4163 mtu 1500
        inet 192.168.1.196  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::d079c367:fea6 prefixlen 64  scopeid 0x20
        ether 86:41:8a:06:1d:7c txqueuelen 1000  (ethernet)
        rx packets 52836  bytes 38891607 (38.8 mb)
        rx errors 0  dropped 1  overruns 0  frame 0
        tx packets 885065  bytes 1255645741 (1.2 gb)
        tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 40
lo: flags=73 mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop txqueuelen 1000  (local loopback)
        rx packets 284667  bytes 313713612 (313.7 mb)
        rx errors 0  dropped 0  overruns 0  frame 0
        tx packets 284667  bytes 313713612 (313.7 mb)
        tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0
使用gst-launch-1.0工具进行rtsp推流:
gst-launch-1.0 v4l2src device=/dev/video9 \
        ! image/jpeg ! avdec_mjpeg ! videoconvert \
        ! video/x-raw,height=720,width=1280,frame=30/1,format=nv12 ! mpph264enc \
        ! rtspclientsink location=rtsp://127.0.0.1:8554/stream
3.4 电脑播放
电脑打开vlc软件,点击【媒体】->【打开网络串流】->【网络】,并输入主板的rtsp推流地址和端口,然后点击播放:
点击播放按钮后,即可看到usb摄像头的图像了:
04推流到rk356x主板
rk356x主板a将usb摄像头推流到rk356x主板b上播放。
4.1 主板a安装gst-rtsp插件
sudo apt install gstreamer1.0-rtsp
4.2 主板a安装mediamtx
mediamtx是一个rtsp server程序
sudo apt install gstreamer1.0-rtsp
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 0204 inf mediamtx v1.1.1
2023/10/20 0204 inf [rtsp] listener opened on :8554 (tcp), :8000 (udp/rtp), :8001 (udp/rtcp)
2023/10/20 0204 inf [rtmp] listener opened on :1935
2023/10/20 0204 inf [hls] listener opened on :8888
2023/10/20 0204 inf [webrtc] listener opened on :8889 (http)
2023/10/20 0204 inf [srt] listener opened on :8890 (udp)
4.3 主板a开始rtsp推流
查看主板a的ip地址:
root@ido:/home/ido# ifconfig
eth0: flags=4163 mtu 1500
        inet 192.168.1.196  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::d079c367:fea6 prefixlen 64  scopeid 0x20
        ether 86:41:8a:06:1d:7c txqueuelen 1000  (ethernet)
        rx packets 52836  bytes 38891607 (38.8 mb)
        rx errors 0  dropped 1  overruns 0  frame 0
        tx packets 885065  bytes 1255645741 (1.2 gb)
        tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 40
lo: flags=73 mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop txqueuelen 1000  (local loopback)
        rx packets 284667  bytes 313713612 (313.7 mb)
        rx errors 0  dropped 0  overruns 0  frame 0
        tx packets 284667  bytes 313713612 (313.7 mb)
        tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0
使用gst-launch-1.0工具进行rtsp推流:
gst-launch-1.0 v4l2src device=/dev/video9 \
        ! image/jpeg ! avdec_mjpeg ! videoconvert \
        ! video/x-raw,height=720,width=1280,frame=30/1,format=nv12 ! mpph264enc \
        ! rtspclientsink location=rtsp://127.0.0.1:8554/stream
4.4 主板b拉流并播放
root@ido:~# gst-launch-1.0 playbin uri=rtsp://192.168.1.196:8554/stream
setting pipeline to paused ...
pipeline is live and does not need preroll ...
progress: (open) opening stream
progress: (connect) connecting to rtsp://192.168.1.196:8554/stream
progress: (open) retrieving server options
progress: (open) retrieving media info
progress: (request) setup stream 0
progress: (open) opened stream
setting pipeline to playing ...
new clock: gstsystemclock
progress: (request) sending play request
progress: (request) sending play request
progress: (request) sent play request
mpp[1359]: mpp_rt: not found ion allocator
mpp[1359]: mpp_rt: found drm allocator
mpp[1359]: mpp_info: mpp version: 49f29006 author: jeffy chen 2021-08-04 [drm]: add mmap flag detection
mpp[1359]: hal_h264d_vdpu34x: control info: fmt 7, w 1280, h 720
mpp[1359]: mpp_buf_slot: set frame info: w 1280 h 720 hor 1280 ver 720
mpp[1359]: mpp_dec: setting default w 1280 h 720 h_str 1280 v_str 720
mpp[1359]: h264d_api: is_avcc=1

超硬核TCP、UDP基础知识汇总4
激光打印机的类型
pcb板防潮可以避免很多问题!
Nest创始人:“智能家居”是伪概念
英特尔推第九代Core新品:地表最强处理器诞生
RK356X Ubuntu 推流USB摄像头
国产功耗仪拿下了项目,拯救了40岁的工程师
iOS 14果然留了一手:完美并非没道理
数控机床有什么用_数控机床的应用范围
AI的人工神经网络
哪些蓝牙耳机性价比比较高?高性价比蓝牙耳机推荐
移动电源什么牌子好?移动电源品牌排行TOP5
电视显示技术改进具有突破性的视觉体验
成功远程托管数据中心的五种方式
疫情洗礼的后AI智能是否能登陆资本市场证明自己呢?
加密货币在未来10年里的发展趋势展望
热电偶漏电的原因及防止方法
电子元器件种类
编程水平真的是一个量变到质变的过程吗?
格科微:3200万像素图像传感器产品实现量产出货