当前位置: 首页 > news >正文

GStreamer (三)常⽤插件

在这里插入图片描述

常⽤插件

  • 1、Source
    • 1.1、filesrc
    • 1.2. videotestsrc
    • 1.3. v4l2src
    • 1.4. rtspsrc和rtspclientsink
  • 2、 Sink
    • 2.1. filesink
    • 2.2. fakesink
    • 2.3. xvimagesink
    • 2.4. kmssink
    • 2.5. waylandsink
    • 2.6. rkximagesink
    • 2.7. fpsdisplaysink
  • 3 、视频推流/拉流
    • 3.1. 本地推流/拉流
      • 3.1.1 USB摄像头
      • 3.1.2 ov8858 mipi摄像头
    • 3.2. RTSP推流/拉流

1、Source

GStreamer的Source插件用于生成和提供媒体数据流。它们可以从不同的数据源读取音频或视频,比如文件、网络、设备等。 常见的Source插件包括文件源(如 filesrc)、网络源(如 tcpserversrc)、设备源(如 v4l2src),这些插件允许开发者灵活地构建多媒体管道, 以满足不同的应用需求。通过配置Source插件,用户可以轻松获取和处理多种类型的媒体数据。

1.1、filesrc

从⽂件读取数据,⽰例如下:

#创建/tmp/test
echo 666 > /tmp/test#读取文件数据到/tmp/test2
gst-launch-1.0 filesrc location=/tmp/test ! filesink location=/tmp/test2#查看
cat /tmp/test2

1.2. videotestsrc

⽣成视频数据,⽰例如下:

# 使⽤默认格式输出视频
gst-launch-1.0 videotestsrc ! xvimagesink
# 使⽤指定格式输出视频
gst-launch-1.0 videotestsrc ! "video/x-raw,width=1920,height=1080,format=(string)NV12" ! xvimagesink

1.3. v4l2src

从摄像头获取视频数据,⽰例如下:

#如果不指定摄像头编号,默认使用系统的第一个视频设备/dev/video0
gst-launch-1.0 v4l2src ! video/x-raw,width=1920,height=1080,format=NV12 ! xvimagesink#如果需要使用特定的摄像头,可以通过device属性指定设备,例如
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080,format=NV12 ! xvimagesink

1.4. rtspsrc和rtspclientsink

rtspsrc和rtspclientsink是GStreamer中用于处理RTSP流的两个不同元素。

rtspsrc:这是一个源元素,用于接收RTSP流。它可以从RTSP服务器拉取音视频流,并将其传递给管道的下游元素进行处理。

rtspclientsink:这是一个接收元素,用于将处理后的音视频流发送到RTSP服务器。

简单来说,rtspsrc用于接收流,rtspclientsink用于发送流。

系统默认没有安装插件,需要进行安装:

#安装插件
sudo apt install gstreamer1.0-rtsp

具体使用方法,参考本章节推流、拉流部分。

2、 Sink

GStreamer的Sink插件用于接收和处理媒体数据流,通常用于输出到不同的目标,例如文件、音频设备、视频显示等。 常见的Sink插件包括文件接收器(如filesink)、音频输出(如 alsasink)、视频显示(如 ximagesink)。 这些插件使开发者能够灵活地将媒体数据导出到所需的格式或设备,方便实现多媒体播放和录制功能。

2.1. filesink

将收到的数据保存为⽂件,⽰例如下:

#创建/tmp/test
echo 666 > /tmp/test#读取文件数据到/tmp/test2
gst-launch-1.0 filesrc location=/tmp/test ! filesink location=/tmp/test2#查看
cat /tmp/test2

2.2. fakesink

将收到的数据全部丢弃,⽰例如下:

gst-launch-1.0 filesrc location=/tmp/test ! fakesink

2.3. xvimagesink

视频Sink,接收视频并显⽰,使⽤X11接口实现,⽰例如下:

gst-launch-1.0 videotestsrc ! xvimagesink

2.4. kmssink

视频Sink,接收视频并显⽰,使⽤kms接口实现,需要独占硬解图层,⽰例如下:

gst-launch-1.0 videotestsrc ! kmssink
# 常⽤命令
connector-id #指定屏幕
plane-id #指定硬件图层
render-rectangle #指定渲染范围

2.5. waylandsink

视频Sink,接收视频并显⽰,使⽤wayland接口实现,⽰例如下:

gst-launch-1.0 videotestsrc ! waylandsink

2.6. rkximagesink

视频Sink,接收视频并显⽰,使⽤drm接口实现零拷⻉等功能,性能较好,但需要独占硬解图层。⽰例如下:

gst-launch-1.0 videotestsrc ! rkximagesink

2.7. fpsdisplaysink

视频Sink,接收视频并统计帧率,同时会将视频中转⾄下⼀级Sink显⽰,⽰例如下:

#⽇志等级为TRACE(7)即可查看实时帧率,设置为DEBUG(5)则只显⽰最⼤/最小帧率
GST_DEBUG=fpsdisplaysink:7 gst-play-1.0 --flags=3 --videosink="fpsdisplaysink \
video-sink=xvimagesink signal-fps-measurements=true text-overlay=false \
sync=false" test.mp4#信息输出如下
Press 'k' to see a list of keyboard shortcuts.
Now playing /home/cat/test.mp4
0:00:00.111413754  7044   0x5580fc5d90 DEBUG         fpsdisplaysink fpsdisplaysink.c:440:fps_display_sink_start:<fpsdisplaysink0> Use text-overlay? 0
Redistribute latency...
0:00:02.035048410  7044   0x7f6004e2d0 DEBUG         fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 44.703224
0:00:02.036371046  7044   0x7f6004e2d0 DEBUG         fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 44.703224
0:00:02.037667141  7044   0x7f6004e2d0 LOG           fpsdisplaysink fpsdisplaysink.c:381:display_current_fps:<fpsdisplaysink0> Signaling measurements: fps:44.703224 droprate:0.000000 avg-fps:44.703224
0:00:02.552749637  7044   0x7f6004e2d0 DEBUG         fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 46.356696
0:00:02.554009567  7044   0x7f6004e2d0 LOG           fpsdisplaysink fpsdisplaysink.c:381:display_current_fps:<fpsdisplaysink0> Signaling measurements: fps:46.356696 droprate:0.000000 avg-fps:45.532539

3 、视频推流/拉流

3.1. 本地推流/拉流

3.1.1 USB摄像头

摄像头接口为device=/dev/video9,需要先运行接收端命令,然后再运行服务端(注意如果是ssh需要指定export DISPLAY=:0环境变量)

#板卡接收端
gst-launch-1.0 udpsrc port=1234 ! "application/x-rtp, payload=96" ! rtph264depay ! decodebin ! autovideosink sync=false#板卡服务端测试1
gst-launch-1.0 v4l2src device=/dev/video9  !  video/x-raw,width=640,height=480,framerate=30/1 ! videoconvert ! video/x-raw,format=UYVY !  mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=1234#板卡服务端测试2
gst-launch-1.0 v4l2src device=/dev/video9  ! image/jpeg !  mppjpegdec ! videoconvert ! video/x-raw,height=1080,width=1920,frame=30/1,format=NV12 !  mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=1234

说明如下:

接收端,命令通过udpsrc从指定的端口(1234)接收RTP数据流,使用rtph264depay解封装RTP数据,接着通过decodebin解码视频流,最后将解码后的视频输出到自动选择的视频窗口(autovideosink)。

服务端测试1:使用v4l2src直接捕获原始视频流,输出为YUYV格式,并进行H.264编码,然后通过rtph264pay封装成RTP数据包,最后使用udpsink将数据推送到指定的地址(127.0.0.1:1234)。

服务端测试2:同样使用v4l2src,但输入的是JPEG格式的图像,通过解码后再转换成NV12格式,并进行H.264编码,然后通过rtph264pay封装成RTP数据包,最后使用udpsink将数据推送到指定的地址(127.0.0.1:1234)。

3.1.2 ov8858 mipi摄像头

摄像头接口为device=/dev/video0,需要先运行接收端命令,然后再运行服务端(注意如果是ssh需要指定export DISPLAY=:0环境变量)

#板卡接收端
gst-launch-1.0 udpsrc port=1234 ! "application/x-rtp, payload=96" ! rtph264depay ! decodebin ! autovideosink sync=false#板卡服务端测试1
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=23/1 ! videoconvert ! video/x-raw,format=UYVY !  mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=1234#板卡服务端测试2
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=960,framerate=23/1 ! videoconvert ! video/x-raw,format=NV12 !  mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=1234

以上和usb相似,只是ov8858不支持输出JPEG格式,测试1和测试2分辨率和格式不同。

3.2. RTSP推流/拉流

系统默认没有安装插件,需要进行安装:

#安装插件

sudo apt install gstreamer1.0-rtsp

推流前需要启动RTSP服务器,需要运行mediamtx

访问: mediamtx,下载mediamtx_vx.x.x_linux_arm64v8.tar.gz

将mediamtx_v1.9.1_linux_arm64v8.tar.gz传到板卡解压并运行:

#运行mediamtx
sudo ./mediamtx &#信息输出如下
2024/09/18 16:24:54 INF MediaMTX v1.9.1
2024/09/18 16:24:54 INF configuration loaded from /home/cat/mediamtx.yml
2024/09/18 16:24:54 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2024/09/18 16:24:54 INF [RTMP] listener opened on :1935
2024/09/18 16:24:54 INF [HLS] listener opened on :8888
2024/09/18 16:24:54 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2024/09/18 16:24:54 INF [SRT] listener opened on :8890 (UDP)

将视频流发送到RTSP服务器,简单⽰例如下:

以下测试USB摄像头,摄像头接口为device=/dev/video9

gst-launch-1.0 v4l2src device=/dev/video9  ! image/jpeg !  mppjpegdec ! videoconvert ! video/x-raw,height=1080,width=1920,frame=30/1,format=NV12 ! tee name=t \
t. ! queue ! videoconvert ! autovideosink \
t. ! videoconvert ! mpph264enc ! queue ! h264parse  ! rtspclientsink location=rtsp://127.0.0.1:8554/live

以下测试mipi摄像头,摄像头接口为device=/dev/video0

gst-launch-1.0 v4l2src device=/dev/video0  !  video/x-raw,width=1920,height=1080,framerate=23/1 ! tee name=t \
t. ! queue ! videoconvert ! autovideosink \
t. ! videoconvert ! mpph264enc ! queue ! h264parse  ! rtspclientsink location=rtsp://127.0.0.1:8554/live

从RTSP服务器中获取视频流,简单⽰例如下:

#指定为实际推流板卡ip
gst-launch-1.0 rtspsrc location=rtsp://192.168.103.101:8554/live ! rtph264depay ! h264parse ! mppvideodec ! xvimagesink

或者使用VLC工具,打开左上角媒体->打开网络串流
在这里插入图片描述

然后根据推流板卡实际IP输入RTSP地址
在这里插入图片描述

如果链接成功则会出现摄像头画面。

相关文章:

GStreamer (三)常⽤插件

常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…...

Jenkins 使用技巧

1. 通过配置文件更改Jenkins默认端口&#xff08;8080&#xff09;&#xff1f; 这里以macos 为例来说明 Jenkins在macOS上通常通过Homebrew或类似的包管理器运行&#xff0c;这与Linux或Windows相比&#xff0c;使用了不同的配置文件布局。默认Jenkins端口8080在启动配置中是…...

Pichome 任意文件读取漏洞复现(CVE-2025-1743)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前…...

Elasticsearch 深入分析三种分页查询【Elasticsearch 深度分页】

前言&#xff1a; 在前面的 Elasticsearch 系列文章中&#xff0c;分享了 Elasticsearch 的各种查询&#xff0c;分页查询也分享过&#xff0c;本篇将再次对 Elasticsearch 分页查询进行专题分析&#xff0c;“深度分页” 这个名词对于我们来说是一个非常常见的业务场景&#…...

避开封禁陷阱:动态IP在爬虫、跨境电商中的落地实践

​​1. 为什么需要动态IP&#xff1f;​​ 在日常网络操作中&#xff0c;你是否遇到过&#xff1a; ​​爬虫被封​​&#xff1a;频繁请求目标网站&#xff0c;IP被限制访问。​​跨境业务受限​​&#xff1a;某些平台对特定地区的账号有限制。​​数据采集失败​​&#x…...

公网ip是固定的吗?动态ip如何做端口映射?内网ip怎么让外网远程访问?

网络IP地址有内网与公网区分&#xff0c;公网IP同时有固定IP和动态IP之分。很多企业所用的办公网络都是公网ip&#xff0c;下载文件的速度更快&#xff0c;而且平台存储的问题可以让他人看得到&#xff0c;体验度比较好。对于无公网IP环境想要申请公网ip的用户来说&#xff0c;…...

MyBatis入门指南

查询user表中所有数据 创建user表&#xff0c;添加数据导入依赖&#xff0c;创建模块编写MyBatis核心配置文件编写SQL映射文件编写代码 定义P0J0类加载核心配置文件&#xff0c;获取SqlSessionFactory对象获取SqlSession对象&#xff0c;执行SQL语句释放资源 一、创建user表…...

GitHub排名第一的开源ERP项目:Odoo生产计划与执行的功能概述

Odoo生产计划与执行隶属于Odoo MRP与MES的运营管理解决方案。Odoo中生产计划有多种形式&#xff0c;从销售预测到销售运作计划(SOP)开始&#xff0c;到随后的主生产计划、物料需求计划(MRP)、分销需求计划(DRP)、长期生产计划&#xff0c;以及粗能力计划(RCCP)和详细能力计划。…...

使用 OpenCV 实现 ArUco 码识别与坐标轴绘制

&#x1f3af; 使用 OpenCV 实现 ArUco 码识别与坐标轴绘制&#xff08;含Python源码&#xff09; Aruco 是一种广泛用于机器人、增强现实&#xff08;AR&#xff09;和相机标定的方形标记系统。本文将带你一步一步使用 Python OpenCV 实现图像中多个 ArUco 码的检测与坐标轴…...

RAC共享存储扩容

存储工程师扩完共享存储后&#xff0c;DBA做如下操作&#xff1a; 1.主机端识别磁盘 在两个节点扫描磁盘命令 # for i in find /sys/class/scsi_host/host*; do echo - - - > $i/scan; done lsblk 2.比对确定新加的盘的uuid&#xff0c;确保uuid是一致的&#xff0c;别…...

高德地图 MCP,可用 Java SolonMCP 接入(支持 java8, java11, java17, java21)

1、MCP技术概述 1.1 什么是 MCP MCP (Model Control Protocol) 是一种允许大模型与外部工具交互的协议&#xff0c;高德地图基于此协议提供了地图服务能力&#xff0c;使 AI 大模型能够直接调用高德的 LBS。 1.2 两种接入架构对比 高德地图 MCP 提供了两种不同的接入方式&a…...

rosbag使用记录

1. 查看某个话题频率 rqt—topic 2. 查看对齐 rqt_bag...

7. 数据库技术

在数据库技术实战中&#xff0c;我们通过MySQL数据库的安装与操作&#xff0c;掌握了从创建数据库、数据表到插入、查询、更新和删除记录的全过程。借助Navicat工具&#xff0c;我们能够更直观地进行数据库管理与开发&#xff0c;提升效率。同时&#xff0c;通过JDBC技术&#…...

Python中的整型(int)和浮点数(float)

在很多初学者眼中&#xff0c;int和float不过是Python中代表整数和小数的基本类型&#xff0c;似乎只是编程语言中最“平凡”的组成部分。但在真正深入软件开发、测试乃至AI数值计算的世界后&#xff0c;你会发现&#xff0c;这两个基础类型背后隐藏着诸多重要的设计哲学、性能…...

Python元组全面解析:从入门到精通

文章目录 Python元组全面解析&#xff1a;从入门到精通一、元组的基本概念1. 什么是元组&#xff1f;2. 元组与列表的对比3. 为什么需要元组&#xff1f; 二、元组的创建方式1. 基本创建方法2. 其他创建方式 三、元组的访问与操作1. 访问元素2. 切片操作3. 元组解包 四、元组的…...

1 asyncio模块

1.1核心概念 1.1.1协程 协程是一种特殊的函数&#xff0c;可以在执行过程中暂停&#xff0c;也可以稍后恢复执行。协程通过async关键字来指定。 await关键字&#xff1a;如果想要立即执行&#xff0c;那调用协程的时候&#xff0c;前面加上await关键字。只想创建协程对象稍后…...

交通拥堵预测器(python)

这是一个基于机器学习的交通拥堵预测应用,使用随机森林算法。 功能特点: - 使用随机森林算法进行交通拥堵预测 - 直观的图形用户界面 - 支持模型训练、评估和保存/加载 - 实时预测特定时间段的拥堵程度 - 数据可视化功能(按星期分布、按时间段分布、热力图) - 支持自…...

解决服务器重装之后vscode Remote-SSH无法连接的问题

在你的windows命令窗口输入&#xff1a; ssh-keygen -R 服务器IPssh-keygen 不是内部或外部命令 .找到Git(安装目录)/usr/bin目录下的ssh-keygen.exe(如果找不到&#xff0c;可以在计算机全局搜索) 2.属性–>高级系统设置–>环境变量–>系统变量,找到Path变量&#…...

STM32实战指南:DHT11温湿度传感器驱动开发与避坑指南

知识点1【DHT11的概述】 1、概述 DHT是一款温湿度一体化的数字传感器&#xff08;无需AD转换&#xff09;。 2、驱动方式 通过单片机等微处理器简单的电路连接就能实时采集本地湿度和温度。DHT11与单片机之间采用单总线进行通信&#xff0c;仅需要一个IO口。 相对于单片机…...

使用 Terraform 创建 Azure Databricks

使用 Terraform 创建 Azure Databricks Terraform 是一种基础设施即代码(IaC)工具,允许用户通过声明式配置文件来管理和部署云资源。Azure Databricks 是一个基于 Apache Spark 的分析平台,专为数据工程和数据科学设计。通过 Terraform,可以自动化 Azure Databricks 的创…...

对话即编程:如何用 Trae 的 @智能体 5 分钟修复一个复杂 Bug?

引子&#xff1a;当新手遇到 "天书" 般的报错 作为刚加入团队的开发者&#xff0c;我在接手一个遗留的 Python 数据处理项目时&#xff0c;遇到了一个诡异报错&#xff1a; python 复制 下载 ValueError: shape mismatch: value array of shape (500,) could no…...

【工具使用】STM32CubeMX-片内Flash读写操作

一、概述 无论是新手还是大佬&#xff0c;基于STM32单片机的开发&#xff0c;使用STM32CubeMX都是可以极大提升开发效率的&#xff0c;并且其界面化的开发&#xff0c;也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片片内Flash功能的应用及其相关知识…...

Java转Go日记(三十九):Gorm查询

1.1.1. 查询 // 获取第一条记录&#xff0c;按主键排序db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 获取最后一条记录&#xff0c;按主键排序db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 获取所有记录db.Find(&users)SELECT *…...

终端安全与终端管理:有什么区别及其重要性?

在当今快速发展的远程和混合工作环境中&#xff0c;IT 团队面临双重挑战&#xff1a;一方面需保护终端免受日益增长的网络风险&#xff0c;另一方面要管理跨越日益分散网络的设备。这些需求催生了两个关键的 IT 解决方案&#xff1a;终端安全和终端管理。尽管二者时常被共同讨论…...

【二分 优先队列】P3611 [USACO17JAN] Cow Dance Show S|普及+

本文涉及的基础知识点 C二分查找 C堆(优先队列) [USACO17JAN] Cow Dance Show S 题面翻译 题目描述 经过几个月的排练&#xff0c;奶牛们基本准备好展出她们的年度舞蹈表演。今年她们要表演的是著名的奶牛芭蕾——“cowpelia”。 表演唯一有待决定的是舞台的尺寸。一个大…...

蓝桥杯分享经验

系列文章目录 提示&#xff1a;小白先看系列 第一章 蓝桥杯的钱白给吗 文章目录 系列文章目录前言一、自我介绍二、经验讲解:1.基础知识2.进阶知识3.个人观点 三、总结四、后续 前言 第十六届蓝桥杯已经省赛已经结束了&#xff0c;相信很多小伙伴也已经得到自己的成绩了。接下…...

TDengine 安全部署配置建议

背景 TDengine 的分布式、多组件特性导致 TDengine 的安全配置是生产系统中比较关注的问题。本文档旨在对 TDengine 各组件及在不同部署方式下的安全问题进行说明&#xff0c;并提供部署和配置建议&#xff0c;为用户的数据安全提供支持。 安全配置涉及组件 TDengine 包含多…...

Grafana当前状态:SingleStat面板

Grafana的SingleStat面板是一种用于展示单个关键指标(KPI)的可视化组件&#xff0c;特别适合需要突出显示核心业务指标的场景(如实时销售额、在线用户数、系统错误率等)。它通过简洁的布局和丰富的样式选项&#xff0c;帮助用户快速聚焦核心数据。Singlem Panel侧重于展示系统的…...

专题五:floodfill算法(太平洋大西洋水流问题)

以leetcode417题为例 题目解析&#xff1a; 整张图&#xff0c;左边深蓝的是太平洋&#xff0c;右边浅蓝的是大西洋&#xff0c;你需要在矩阵中找到一个点&#xff0c;使其可以流向太平洋又可以流向大西洋&#xff0c;并且你每次流的时候只能由高到低&#xff0c;或者相等到相…...

【HTML】【面试提问】HTML面试提问总结

第一章 HTML基础相关提问 1.1 HTML基本概念 1.1.1 什么是HTML HTML 即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#x1f60e;&#xff0c;它是用于创建网页的标准标记语言。简单来说&#xff0c;HTML 就像是搭建房屋的砖块&#x1f9f1;&#xff0…...

解锁MySQL性能调优:高级SQL技巧实战指南

高级SQL技巧&#xff1a;解锁MySQL性能调优的终极指南 开篇 当前&#xff0c;随着业务系统的复杂化和数据量的爆炸式增长&#xff0c;数据库性能调优成为了技术人员面临的核心挑战之一。尤其是在高并发、大数据量的场景下&#xff0c;SQL 查询的性能直接影响到整个系统的响应…...

数据分析与应用---数据可视化基础

目录 Matplotlib基础绘图 &#xff08;一&#xff09;、pyplot绘图基础语法与常用参数 1、pyplot基础语法 &#xff08;1&#xff09; 创建画布与创建子图 &#xff08;2&#xff09; 添加画布内容 &#xff08;3&#xff09; 保存与显示图形 案例代码 2. 设置pyplot的动态…...

android双屏之副屏待机显示图片

摘要&#xff1a;android原生有双屏的机制&#xff0c;但需要芯片厂商适配框架后在底层实现。本文在基于芯发8766已实现底层适配的基础上&#xff0c;仅针对上层Launcher部分对系统进行改造&#xff0c;从而实现在开机后副屏显示一张待机图片。 副屏布局 由于仅显示一张图片&…...

oracle序列自增问题

1.先查询表名对应的序列名称 SELECT trigger_name, trigger_type, triggering_event FROM all_triggers WHERE table_name 表名;2. 查询id最大值 SELECT MAX(ID) FROM 表名;3. 查询下一次生成ID SELECT SJCJ_ENERGY_DATA_INSERTID.NEXTVAL FROM DUAL;4. 设置临时步长,越过…...

FLASHDB API分析

fdb_kvdb_init 函数详解 fdb_kvdb_init 是 FlashDB 框架中用于 ​初始化键值数据库&#xff08;KVDB&#xff09;​​ 的核心接口&#xff0c;其功能涵盖底层存储配置、默认数据加载与多模式适配。以下从功能、参数、使用场景及注意事项展开分析&#xff1a; 一、功能与作用 ​…...

使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务

&#x1f680; 使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务 本文基于 ABP vNext MinIO 的对象存储集成实践&#xff0c;系统讲解从 MinIO 部署、桶创建、ABP 集成、上传 API、安全校验、预签名访问&#xff0c;到测试、扩展及多租户支持的全过程。目标是构建一套可复…...

3.安卓逆向2-安卓文件目录

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;2.安卓逆向2-adb指令 首先使用adb连接到手机&#xff0c;如下图使用adb命令列出手机的目录&am…...

云原生时代的系统可观测性:理念变革与实践体系

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:为什么可观测性在云原生时代变得更加重要? 传统应用系统运行于固定服务器,拓扑结构稳定、依赖路径清晰,排查故障依赖日志和人工经验已足够支撑运维。但在云原生环境中,系统正快速演变为: 微…...

力扣网-复写零

1.题目要求 2.题目链接 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 3.题目解答 class Solution {public void duplicateZeros(int[] arr) {int cur0,dest-1,narr.length;while(cur<n){//遇到0就dest走两步if(arr[cur]0){dest2;}//遇到非零元素dest就走一步els…...

高项-挣值管理TCPI

TCPI&#xff08;完工尚需绩效指数&#xff09;的英文全称及含义 TCPI 是项目管理&#xff08;尤其是挣值管理EVM, Earned Value Management&#xff09;中的一个关键指标&#xff0c;其英文全称为&#xff1a; To-Complete Performance Index 中文译为**“完工尚需绩效指数”…...

Java大厂面试三轮问答:微服务与数据库技术深度解析

Java大厂面试&#xff1a;谢飞机的三轮挑战 第一轮&#xff1a;微服务基础与电商场景设计 面试官: "谢飞机&#xff0c;假设我们要设计一个电商平台&#xff0c;需要支持用户下单、支付以及订单追踪。你会如何设计微服务架构&#xff1f;" 谢飞机: "呃&#…...

Linux 移植 Docker 详解

一、移植前的环境准备 在将 Docker 移植到 Linux 系统之前&#xff0c;需要确保系统满足一定的条件&#xff0c;以保证 Docker 能够稳定运行。 1. 操作系统版本要求 Docker 对 Linux 操作系统版本有一定的要求&#xff0c;不同的 Docker 版本适配不同的 Linux 发行版及版本。常…...

滑动验证码缺口识别与自动化处理技术解析

在如今的网络安全环境中&#xff0c;滑动验证码作为一种主流的人机验证方案&#xff0c;被广泛应用。它的核心挑战主要集中在两个方面&#xff1a;一是如何准确地识别出缺口位置&#xff0c;二是如何模拟出逼真的拖动轨迹。 一、缺口识别技术方案 &#xff08;一&#xff09;…...

C++字符串处理:`std::string`和`std::string_view`的区别与使用

在 C中&#xff0c;std::string和std::string_view都用于处理字符串&#xff0c;但它们的用途和性能特点有很大不同。本教程将通过代码示例和流程图&#xff0c;帮助你快速掌握它们的使用方法。 1.什么是std::string和std::string_view&#xff1f; 1.1std::string std::str…...

Uniapp中动态控制scroll-view滚动的方式

在Uniapp 4.45中&#xff0c;动态修改scroll-view的scroll-left属性时无法触发滚动&#xff08;直接设置scroll-left属性值没问题&#xff09;&#xff0c;这通常是因为数据更新与 DOM 渲染之间的异步特性导致的。知道了原因&#xff0c;但是直接修改scroll-left属性值还是失败…...

手机怎么查看网络ip地址?安卓/iOS设备查询指南

在移动互联网时代&#xff0c;IP地址作为设备的网络身份证&#xff0c;无论是网络调试、远程连接还是排查故障都至关重要。本文将系统介绍安卓和iOS设备查看IP地址的多种方法&#xff0c;帮助您快速掌握这一实用技能。 一、安卓手机查看IP地址方法 1、通过WiFi设置查看 打开设…...

R语言+贝叶斯网络:涵盖贝叶斯网络的基础、离散与连续分布、混合网络、动态网络,Gephi可视化,助你成为数据分析高手!

&#x1f50d; 在现代生态、环境及地学研究中&#xff0c;变量及其因果关系的推断是核心课题之一。然而&#xff0c;传统的因果关系研究通常依赖于昂贵的实验&#xff0c;而实验结果往往与天然环境中的实际因果联系存在较大偏差。例如&#xff0c;在生态系统中&#xff0c;物种…...

手机内存不够,哪些文件可以删?

1️⃣应用缓存文件 安卓&#xff1a;通过「文件管理器」→「Android」→「data」或「cache」文件夹&#xff08;部分需权限&#xff09;&#xff0c;或直接在应用设置中清除缓存 iOS&#xff1a;无需手动清理&#xff0c;系统会自动管理&#xff0c;或在应用内设置中清除&…...

C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)

在C语言中&#xff0c;经常出现上述的概念&#xff0c;即比特&#xff08;bit&#xff09;、字节&#xff08;Byte&#xff09;、字&#xff08;Word&#xff09;、整数&#xff08;Int&#xff09;。查看C语言标准&#xff0c;比特&#xff08;bit&#xff09;的定义如下&…...

组态王通过开疆智能profinet转ModbusTCP网关连接西门子PLC配置案例

本案例是组态王通过使用开疆智能研发的Profinet转ModbusTCP网关采集西门子1200PLC中数据的案例。 网关配置 首先来配置网关的参数&#xff0c;打开网关配置软件“Gateway Configuration Studio” 由于组态王那侧设定为ModbusTCP客户端所以网关作为ModbusTCP服务器。新建项目…...