【技术分享】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应用场景。
产品规格书查看深圳触觉智能官网-产品中心


01 确认USB摄像头设备节点
主板接上USB摄像头后,使用以下命令查看USB摄像头的设备节点:
root@ido:~# v4l2-ctl --list-devices
rkisp-statistics (platform: rkisp):/dev/video7/dev/video8rkisp_mainpath (platform:rkisp-vir0):/dev/video0/dev/video1/dev/video2/dev/video3/dev/video4/dev/video5/dev/video6/dev/media0AC_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_FMTType: Video Capture[0]: 'MJPG' (Motion-JPEG, compressed)Size: Discrete 1024x576Interval: Discrete 0.033s (30.000 fps)Size: Discrete 1280x720Interval: Discrete 0.033s (30.000 fps)Size: Discrete 896x504Interval: Discrete 0.033s (30.000 fps)Size: Discrete 800x600Interval: Discrete 0.033s (30.000 fps)Size: Discrete 640x480Interval: Discrete 0.033s (30.000 fps)[1]: 'YUYV' (YUYV 4:2:2)Size: Discrete 1280x720Interval: Discrete 0.100s (10.000 fps)Size: Discrete 1024x576Interval: Discrete 0.067s (15.000 fps)Size: Discrete 896x504Interval: Discrete 0.100s (10.000 fps)Size: Discrete 800x600Interval: Discrete 0.067s (15.000 fps)Size: Discrete 640x480Interval: 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 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安装包可到以下链接下载:
链接:https://pan.baidu.com/s/1CXrk7eJIkUJKD4tK1SkFAA?pwd=1234
提取码:1234
3.3 主板开始RTSP推流
查看主板的IP地址:
root@ido:/home/ido# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.196 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::d079:b6fc:c367:fea6 prefixlen 64 scopeid 0x20<link>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 0TX packets 885065 bytes 1255645741 (1.2 GB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 40lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 284667 bytes 313713612 (313.7 MB)RX errors 0 dropped 0 overruns 0 frame 0TX 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
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 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安装包可到以下链接下载:
链接:https://pan.baidu.com/s/1CXrk7eJIkUJKD4tK1SkFAA?pwd=1234
提取码:1234
4.3 主板A开始RTSP推流
查看主板A的IP地址:
root@ido:/home/ido# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.196 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::d079:b6fc:c367:fea6 prefixlen 64 scopeid 0x20<link>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 0TX packets 885065 bytes 1255645741 (1.2 GB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 40lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 284667 bytes 313713612 (313.7 MB)RX errors 0 dropped 0 overruns 0 frame 0TX 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

相关文章:
【技术分享】RK356X Ubuntu 推流USB摄像头
本文适用与触觉智能所有RK356X ubuntu系统的主板。 IDO-SBC3566基于瑞芯微RK3566研发的一款高性能低功耗的智能主板,采用四核A55,主频高达1.8GHz,专为个人移动互联网设备和AIOT设备而设计,内置了多种功能强大的嵌入式硬件引擎,为…...
介绍一下rabbitMq应用场景
任务队列:RabbitMQ可以将待处理的任务放入队列中,再由多个工作进程异步地执行这些任务。 日志处理:RabbitMQ可以通过发布-订阅模式将日志消息分发到多个消费者,并可以灵活地控制消息的优先级和过滤条件。 实时消息处理ÿ…...
IoT 物联网共享充电桩场景中设备资产定位和地理围栏开发实践
基于经纬度的设备资产定位和地理围栏在物联网场景中应用广泛 01 物联网 GEO 场景架构方案 首先,IoT 终端设备通过卫星定位模块获取当前经纬度;然后,将坐标信息实时上报到物联网平台;最后,存储到 Redis GEO 数据库中。 …...
【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果
目的 Q:如何在Qt库的基础上,实现自定义控件呢? A:根据官方文档回答,就是继承需实现的控件,然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何: listItem 主…...
【iOS】UITableView总结(Cell的复用原理、自定义Cell、UITableViewCell协议方法)
UITableView 列表的特点: 数据量大样式较为统一通常需要分组垂直滚动通常可视区只有一个 -> 视图的复用 UITableViewDataSource UITableView作为视图,只负责展示,协助管理,不管理数据 需要开发者为UITableView提供展示所需…...
shell之常见网络命令介绍
shell之常见网络命令介绍 1)ifconfig 用于配置网络接口。可以用于开启、关闭和设置网络接口的参数,如IP地址、子网掩码、MAC地址等。 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up上述命令将设置eth0网络接口的IP地址为192.168.1.1,子…...
Android屏幕刷新机制
基础知识 CPU运行在Android设备上的中央处理器(Central Processing Unit)是Android设备的核心组件之一,负责执行计算和控制设备的各种操作。 Android设备上的CPU通常采用ARM架构,如ARM Cortex-A系列处理器。这些处理器具有高性能…...
Python学习第3天-第一个Python程序
文章目录 前言一、创建项目二、创建程序总结 前言 下面给大家展示下经典的Hello World! 一、创建项目 二、创建程序 print("Hello World!")总结 回到顶部 学习网站 欢迎来到Python的世界!...
Golang网络
golang游戏服务器框架 在Go语言中,有许多优秀的游戏服务器框架,以下是一些比较流行的框架: Leaf:一个轻量级的游戏服务器框架,支持多进程、分布式、热更新等特性。它提供了一些常用的组件,如网络层、定时器、数据库等等,可以帮助开发者快速构建游戏服务器。go-ethereum…...
[swift刷题模板] 树状数组(BIT/FenwickTree)
[TOC]([swift刷题模板] 树状数组(BIT/FenwickTree) ) 一、 算法&数据结构 1. 描述 [python刷题模板] 树状数组 二、 模板代码 1. 单点赋值(增加),区间求和(PURQ) 例题: 307. 区域和检索 - 数组可修改 class BIT {var c: [Int]var n: Int init(_ n: Int){c…...
CUDA学习笔记(三)CUDA简介
本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/,仅用于学习。 前言 线程的组织形式对程序的性能影响是至关重要的,本篇博文主要以下面一种情况来介绍线程组织形式: 2D grid 2D block 线程索引 矩阵在memory中是row-major线性…...
RK3568笔记三:基于ResNet18的Cifar-10分类识别训练部署
若该文为原创文章,转载请注明原文出处。 本篇文章参考的是野火-lubancat的rk3568教程,本篇记录了在正点原子的ATK-DLK3568部署。 一、介绍 ResNet18 是一种卷积神经网络,它有 18 层深度,其中包括带有权重的卷积层和全连接层。它…...
块状数据结构学习笔记
分块 分块的思想和珂朵莉树很类似,就是把原序列分成若干个块,对块进行操作的奇妙思想。复杂度通常带根号。分块的块长也有讲究,通常对于大小为 n n n 的数组,取距离 n \sqrt n n 最近的 2 2 2 的幂数或直接取 n \sqrt n n…...
DOM4J解析.XML文件
<?xml version"1.0" encoding"utf-8" ?> <books><book id"SN123123413241"><name>java编程思想</name><author>华仔</author><price>9.9</price></book><book id"SN1234…...
黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC
MVC发展史 在我们开发小型项目时,我们代码是混杂在一起的,术语称为紧耦合。 如最终写ASP、PHP。里面既包括服务器端代码,数据库操作的代码,又包括前端页面代码、HTML展现的代码、CSS美化的代码、JS交互的代码。可以看到早期编程就…...
二、BurpSuite Intruder暴力破解
一、介绍 解释: Burp Suite Intruder是一款功能强大的网络安全测试工具,它用于执行暴力破解攻击。它是Burp Suite套件的一部分,具有高度可定制的功能,能够自动化和批量化执行各种攻击,如密码破解、参数枚举和身份验证…...
solidworks 2024新功能之-让您的工作更加高效
您可以创建杰出的设计,并将这些杰出的设计将融入产品体验中。为了帮您简化和加快由概念到成品的产品开发流程,SOLIDWORKS 2024 涵盖全新的用户驱动型增强功能,致力于帮您实现更智能、更快速地与您的团队和外部合作伙伴协同工作。 SOLIDWORKS…...
华为eNSP配置专题-VRRP的配置
文章目录 华为eNSP配置专题-VRRP的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 2.VRRP的配置2.1、PC1的配置2.2、接入交换机acsw的配置2.3、核心交换机coresw1的配置2.4、核心交换机coresw2的配置2.5、配置VRRP2.6、配置出口…...
LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块
常量 常量 类型 解释 lcd.font_opposansm8 font 8号字体 lcd.font_unifont_t_symbols font 符号字体 lcd.font_open_iconic_weather_6x_t font 天气字体 lcd.font_opposansm10 font 10号字体 lcd.font_opposansm12 font 12号字体 lcd.font_opposansm16 font…...
敏捷是怎么提高工作效率的
敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…...
Qt5.14.2 MinGW静态编译实战:从环境搭建到独立可执行文件生成
1. 环境准备:工具链与源码部署 搞Qt静态编译就像搭积木,得先把所有零件备齐。我去年给工业控制软件做独立部署时,深刻体会到工具链完整的重要性。Windows环境下需要准备这些关键材料: Qt 5.14.2官方安装包:推荐从清华大…...
从时钟树到中断回调:图解S32K3的STMPIT完整工作流程
从时钟树到中断回调:图解S32K3的STM&PIT完整工作流程 在汽车电子领域,精确的定时控制如同车辆的神经系统,协调着各个ECU的运作节奏。S32K3系列MCU作为NXP面向新一代汽车架构的核心控制器,其内置的STM(系统定时器模…...
联邦滤波器实战:从零搭建一个多传感器融合系统(附Python代码)
联邦滤波器实战:从零搭建一个多传感器融合系统(附Python代码) 在自动驾驶、机器人导航和工业监测等领域,多传感器数据融合是提升系统可靠性的核心技术。联邦滤波器作为一种分布式滤波架构,能够有效整合来自不同传感器的…...
基于Arduino与ESP32-S2的WiFi FTM RTT测距实战:从环境搭建到误差分析
1. WiFi FTM RTT测距技术原理与应用场景 WiFi FTM(Fine Time Measurement)RTT(Round Trip Time)是一种基于IEEE 802.11mc标准的无线测距技术。简单来说,它就像两个人在黑暗房间里通过喊话估算距离——一个人喊"喂…...
流放之路Build规划终极解决方案:Path of Building完全指南
流放之路Build规划终极解决方案:Path of Building完全指南 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 还在为《流放之路》复杂的Build规划而头疼吗&#…...
Cesium架构深度解析:从核心层到动态场景的构建逻辑
1. Cesium框架的四大核心层级 第一次接触Cesium时,很多人会被它复杂的三维场景震撼到。但你可能不知道,这个看似庞大的系统其实是由四个精密的层级构成的。就像搭积木一样,每一层都有明确的职责,又与其他层级紧密配合。让我用一个…...
AI注释生成实战指南:5大工业级场景、3类错误避坑清单与实时调试技巧
第一章:2026奇点智能技术大会:AI注释生成 2026奇点智能技术大会(https://ml-summit.org) 核心突破:语义感知型注释生成引擎 大会首次公开演示了SAGE(Semantic-Aware Generation Engine),一个支持跨语言、…...
手把手教你用GEC6818开发板+RFID模块,从零搭建一个公交刷卡终端(附完整源码与避坑指南)
从零构建公交刷卡终端:GEC6818开发板与RFID模块实战指南 在嵌入式系统开发领域,GEC6818开发板因其强大的性能和丰富的接口资源,成为众多开发者实践项目的首选平台。本文将带领读者从硬件搭建到软件实现,完整构建一个功能完善的公…...
告别Arduino模拟引脚精度焦虑:用ADS1115实现高精度电压采集(附完整代码与接线图)
告别Arduino模拟引脚精度焦虑:用ADS1115实现高精度电压采集(附完整代码与接线图) 当你在电子秤项目中反复调试却发现称重传感器输出的微小电压变化无法被Arduino UNO准确捕捉时,当环境监测设备因温度波动导致模拟读数跳变超过预期…...
洛谷-数据结构1-2-二叉树1
P4715 【深基16.例1】淘汰赛题目描述有 2n(n≤7)个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 …...
