【技术分享】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 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...