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

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录

  • ESP32-CAM 概述
    • ESP32-S 处理器
    • 内存
    • Camera 模块
    • MicroSD 卡槽
    • 天线
    • 板载 LED 和闪光灯
    • 其他
      • 数据手册和原理图
      • ESP32-CAM 功耗
  • ESP32-CAM 引脚参考
    • 引脚排列
    • GPIO 引脚
      • 哪些 GPIO 可以安全使用?
      • GPIO 0 引脚
      • MicroSD 卡引脚
  • ESP32-CAM 的烧录方式
      • 使用 ESP32-CAM-MB 编程器(推荐)
      • 使用 FTDI 适配器
  • 基于 ESP32-CAM 实时视频流服务器
    • 选择主板
    • 测试开发板
    • 实时视频流服务器

ESP32-CAM 是一款于 2019 年初上市的开发板,它的出现惊艳了一众嵌入式开发爱好者,不到 35 元的价格,就可以获得一台支持摄像头和 SD 卡的 ESP32。毫无疑问,ESP32-CAM 是一款功能强大的设备,唯一的缺点可能是,ESP32-CAM 的 IO 引脚较少,其中一些与 SD 卡共享,因此在插入 SD 卡时部分 IO 引脚无法使用,因此很难围绕它设计项目。

当然,这个模块非常简约小巧,无论是检测人脸、解码车牌,还是仅仅需要一个安全摄像头,都值得在 DIY 工具箱中拥有一席之地。

在这里插入图片描述

ESP32-CAM 概述

ESP32-CAM 的核心是安信可科技(Ai-Thinker)的 ESP32-S 系统级芯片。作为系统级芯片,ESP32-S 芯片在单个芯片上包含微处理器、RAM、存储和外围设备。虽然该芯片的功能令人印象深刻,但 ESP32-CAM 开发板增加了更多功能,下面我们逐一看一下每个组件。

ESP32-S 处理器

ESP32-CAM 搭载了安信可科技的 ESP32-S 表面贴装印刷电路板模块。它相当于乐鑫的 ESP-WROOM-32 模组(外形尺寸和通用规格相同)。

在这里插入图片描述

ESP32-S 包含一个 Tensilica Xtensa® LX6 微处理器,带有两个 32 位内核,运行频率高达 240 MHz,这就是 ESP32-S 适用于视频处理、面部识别甚至人工智能等密集型任务的原因。

内存

内存对于复杂任务至关重要,因此 ESP32-S 具有完整的 520 KB 内部 RAM,与芯片的其他组件位于同一芯片上。

在这里插入图片描述

520 KB RAM 可能不足以完成 RAM 密集型任务,因此 ESP32-CAM 包括 4 MB 的外部 PSRAM1(Pseudo Static Random Access Memory,伪静态随机存取存储器)来扩展内存容量,这个容量对于密集的音频或图形处理已经足够了。

为了有足够的存储空间来存储程序和数据,ESP32-S 芯片还包含 4 MB 的片上闪存(Flash Memory)。

Camera 模块

ESP32-CAM 上的 OV2640 摄像头传感器使其有别于其他 ESP32 开发板,非常适合用于视频门铃或保姆摄像头等视频项目。

在这里插入图片描述

OV2640 摄像机的分辨率为 200 万像素,相当于最大 1600×1200 像素,这对于许多监控应用来说已经足够了。

同时,ESP32-CAM 也兼容 esp32-camera 上列出的各种摄像头传感器。

MicroSD 卡槽

在 ESP32-CAM 上增加一个 microSD 卡插槽,可以用于数据记录器或图像捕获。

在这里插入图片描述

天线

ESP32-CAM 配有板载 PCB 走线天线以及用于连接外部天线的 u.FL 连接器。天线选择跳线是一个零欧电阻,默认是板载 PCB 走线天线,如果要切换成外部天线,需要用电烙铁把零欧电阻焊接在另一个焊盘上。

在这里插入图片描述

一般用 PCB 天线用于试验 ESP32-CAM ,尤其是靠近路由器时效果最好(安信可科技称 PCB 天线的增益为 2.1dBi)。但一些离离路由器较远的项目,可能会遇到视频流缓慢和其他连接问题。在这种情况下,可以使用带有 IPX 连接器的 2.4GHz 外部天线,需要更改天线跳线以启用 u.FL 连接器。

在这里插入图片描述

三个焊盘位于 u.FL 连接器旁边以及板载天线和 ESP32-S 的金属外壳之间,一个零欧电阻器连接顶部的两个焊盘,只需将零欧电阻取下并焊在下面焊盘即可。

板载 LED 和闪光灯

ESP32-CAM 有一个白色的方形 LED,是一个板载的相机闪光灯,也可用于一般照明,引脚为 GPIO 4,输出高电平点亮闪光灯。背面有一个小的红色 LED,可用作状态指示灯(可编程),引脚为 GPIO 33,输出低电平点亮 LED。

在这里插入图片描述

其他

数据手册和原理图

有关 ESP32-CAM 的更多信息,请参阅:

ESP32-CAM 原理图

OV2640 Camera 数据手册

[!CAUTION]

ESP32-CAM 的数据手册在线链接已经失效了(原链接:https://docs.ai-thinker.com/_media/esp32/docs/esp32-cam_product_specification_zh.pdf),希望安信可科技官方能尽快解决这个问题。

ESP32-CAM 功耗

ESP32-CAM 的功耗范围从不流式传输视频时的 80 mAh 到流式传输视频时的 100~160 mAh 左右,如果打开闪光灯后,功耗可以达到 270 mAh。

ESP32-CAM 引脚参考

引脚排列

ESP32-CAM 共有 16 个引脚。为方便起见,具有相似功能的 pin 被组合在一起。引脚分配如下:

在这里插入图片描述

GPIO 引脚

ESP32-S 芯片共有 32 个 GPIO 引脚,但由于其中许多引脚在内部用于摄像头和 PSRAM,因此 ESP32-CAM 只有 10 个 GPIO 引脚可用。通过对适当的寄存器进行编程,可以为这些引脚分配各种外设功能,例如 UART、SPI、ADC 和 Touch等。

在这里插入图片描述

哪些 GPIO 可以安全使用?

下表显示了哪些引脚可以安全使用,哪些引脚应谨慎使用:

[!IMPORTANT]

⭕️ – 可以放心使用的引脚;

❗️ – 需要谨慎使用的引脚;

❌ – 建议不使用的引脚。

标签GPIO使用建议原因
IO00❗️启动时必须为 HIGH,下载代码时必须为 LOW
U0T1UART0 的发送引脚,用于烧录和调试
IO22❗️开机时必须为 LOW,当有 microSD 卡时不能使用
U0R3UART0 的接受引脚,用于刷写和调试
IO44❗️连接到板载闪光灯,当有 microSD 卡时无法使用
IO1212❗️开机时必须为 LOW,当有 microSD 卡时不能使用
IO1313❗️当有 microSD 卡时无法使用
IO1414❗️当有 microSD 卡时无法使用
IO1515❗️启动时必须为 HIGH,如果拉低则会阻止启动日志的输出,当有 microSD 卡时无法使用
IO1616⭕️
板载 LED33⭕️

GPIO 0 引脚

GPIO 0 是最重要的引脚。它确定 ESP32 是否处于下载模式。

该 GPIO 在启动时必须为高电平,在下载模式时必须为低电平。该引脚在内部有一个 10KΩ 的电阻上拉。如果要下载程序到开发板上,需要把该引脚拉低,即短接到 GND,使开发板进入下载模式,即可烧录程序。烧录程序完成后,断开与 GND 的短接,引脚被拉回高电平,进而重启开发板。

MicroSD 卡引脚

以下引脚用于连接 MicroSD 卡,如果不使用 MicroSD 卡,可以将这些引脚用作常规输入和输出。

在这里插入图片描述

ESP32-CAM 的烧录方式

对 ESP32-CAM 进行编程可能会有点麻烦,因为它没有内置的 USB 端口,用户需要额外的硬件才能程序下载到开发板上。过程不复杂,但很不方便。

一般有两种下载方式,一种是用 ESP32-CAM-MB 编程器,另一种是 FTDI 适配器或者 USB-to-TTL 模块。

使用 ESP32-CAM-MB 编程器(推荐)

一般在购买 ESP32-CAM 的时候,卖家都会推荐再买一个 ESP32-CAM-MB 的小型附加子板,如下图:

在这里插入图片描述

这个编程器板载了一个 CH340G USB 转串口芯片,不仅可以烧写程序,还可以与电脑进行串口通信。此外,还有附带了 RESET 按钮(与 ESP32-CAM 的复位按钮并联)、BOOT 按钮(连接在 GPIO 0,按下时可将 GPIO 0 下拉到低电平)、电源指示灯 LED 和稳压器,可为 ESP32-CAM 提供充足的电力。

按下图的安装方式,把 ESP32-CAM 安装进 ESP32-CAM-MB,下载程序时,按住 ESP32-CAM-MB 上的 BOOT 按钮,直到程序下载完成再松开。

在这里插入图片描述

使用 FTDI 适配器

如果在购买 ESP32-CAM 时,没有附购 ESP32-CAM-MB,那么就需要用 FTDI 适配器下载程序了。接线方式如下:

在这里插入图片描述

许多 FTDI 编程器都有一个跳帽,可在 3.3V 和 5V 之间进行切换。由于 ESP32-CAM 供电为 5V,请确保跳线设置为 5V。

另外,下载程序时,需要将 GPIO 0 引脚短接在 GND,下载完成后,必须断开才能正常运行。

基于 ESP32-CAM 实时视频流服务器

选择主板

ESP32-CAM 开发板在 Arduino IDE 有单独的选项,如下图所示,选择 “AI Thinker ESP32-CAM” 即可。

在这里插入图片描述

Arduino IDE 2.0以上版本可以直接搜索设置,如下图:

在这里插入图片描述

测试开发板

先用一个点亮闪光灯的程序测试一下开发板,如下:

#define CAMERA_FLASH 4void setup()
{pinMode(CAMERA_FLASH, OUTPUT);
}void loop()
{digitalWrite(CAMERA_FLASH, HIGH);delay(1000);digitalWrite(CAMERA_FLASH, LOW);delay(2000);
}

把程序下载到开发板上运行,如果闪光灯按预设的亮一秒、熄灭两秒的规律运行,说明开发板正常。

实时视频流服务器

这个程序不需要我们亲自编写,如下图操作,乐鑫官方为用户提供了一个示例,就是实时视频流服务器的示例程序。

在这里插入图片描述

该例程使 ESP32-CAM 成为功能齐全的网络摄像头,具有人脸检测和大量自定义选项等功能。不过这个例程不能直接下载到 ESP32-CAM,需要做一些修改。Arduino IDE 的例程为只读文件,是不允许直接修改的,所以我们需要把例程另存为用户文档,直接操作另存为即可,这里不做演示。

因为 ESP32-CAM 使用的是 AI-Thinker 模型,所以要取消注释 CAMERA_MODEL_AI_THINKER 这个宏定义,并注释所有其他模型。

在这里插入图片描述

接下来,需要将 ESP32-CAM 连接到WiFi,把 WiFi 名称和密码都写在下面两个变量即可。

在这里插入图片描述

修改好即可编译上传到开发板,以波特率 115200 打开串行监视器,然后按 ESP32-CAM 上的重置按钮。稍等一会就可以在 Serial Monitor 中看到 IP 地址。

在这里插入图片描述

启动浏览器并输入串行监视器上显示的 IP 地址。确保 Web 浏览器与 ESP32-CAM 在同一网络上。ESP32-CAM 应显示一个网页。按下网页的 Start Stream 按钮,即可开始推送视频流。

在这里插入图片描述

可以在左侧窗格中尝试各种摄像机设置。例如,可以更改视频的分辨率和帧速率,以及其亮度、对比度、饱和度等。点击 Get Still 按钮拍照,图像会下载到计算机。


  1. PSRAM 的全称是 Pseudo Static Random Access Memory(伪静态随机存取存储器)。它采用 1T1C(一个晶体管和一个电容器)的架构,类似于 DRAM,但外部接口与 SRAM 相同,提供类似 SRAM 的简单接口和驱动方式‌。PSRAM 结合了 SRAM 的高速和 DRAM 的高容量特性,适用于需要大容量存储且要求高速访问的场景‌。 ↩︎

相关文章:

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用?GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...

编译与汇编

本文来自《程序员的自我修养》 编译过程是把预处理完的文件进行一系列词法分析,语法分析,语义分析以及优化后生成相应的汇编文件代码。 现在版本的GCC把预编译和编译两个步骤合并为一个步骤。 gcc -S HelloWorld.c HelloWorld.sint main() {//test/* …...

Linux入门攻坚——43、keepalived入门-1

Linux Cluster(Linux集群的类型):LB、HA、HPC,分别是负载均衡集群、高可用性集群、高性能集群。 LB:lvs,nginx HA:keepalived,heartbeat,corosync,cman HP&am…...

备考蓝桥杯:顺序表相关算法题

目录 询问学号 寄包柜 移动0 颜色分类 合并两个有序数组 物品移动 询问学号 我们的思路&#xff1a;创建一个顺序表存储从1开始依次存放进入教室的学生学号&#xff0c;然后查询 #include <iostream> #include <vector> using namespace std; const int N 2…...

【STM32+QT项目】基于STM32与QT的智慧粮仓环境监测与管理系统设计(完整工程资料源码)

视频演示: 基于STM32与QT的智慧粮仓环境监测与管理系统设计 目录: 目录 视频演示: 目录: 前言:...

Vue3 自定义hook

文章目录 Vue3 自定义hook概述用法 Vue3 自定义hook 概述 Vue3推荐利用Vue的组合式API函数进行代码封装&#xff0c;这种封装方式统称为自定义hook。 用法 定义 hook/countHook.js&#xff1a; import {computed, ref, watch} from "vue";export default (initC…...

【VBA】【EXCEL】将某列内容横向粘贴到指定行

Sub CopyRowToColumn()On Error GoTo ErrorHandler 添加错误处理Application.ScreenUpdating FalseApplication.Calculation xlCalculationManualApplication.EnableEvents False 禁用事件处理Dim lastCol As LongDim lastRow As LongDim i As Long, colCount As LongDim …...

使用Llama 3.1创建合成数据集以调优你的大型语言模型

使用Llama 3.1创建合成数据集以调优你的大型语言模型 在数据驱动的人工智能领域&#xff0c;数据是核心资产。开发高质量数据集既复杂又昂贵&#xff0c;因此很多实验室和开发者选择使用合成数据集。本文将介绍如何利用大型语言模型Llama 3.1 405B创建合成数据集&#xff0c;并…...

【Ubuntu22.04】VMware虚拟机硬盘扩容

1.首先打开虚拟机设置 2.根据需要对硬盘扩展 这边提示我们还需要进入虚拟机在内部分区 3.安装界面化磁盘管理工具 # 安装 sudo apt install gparted# 启动 sudo gparted调整硬盘大小 调整的时候会提示我们硬盘是只读的&#xff0c;因此还要进行操作 新建终端重新挂载文件系…...

初学stm32 --- DMA直接存储器

目录 DMA介绍 STM32F1 DMA框图 DMA处理过程 DMA通道 DMA优先级 DMA相关寄存器介绍 F1 DMA通道x配置寄存器&#xff08;DMA_CCRx&#xff09; DMA中断状态寄存器&#xff08;DMA_ISR&#xff09; DMA中断标志清除寄存器&#xff08;DMA_IFCR&#xff09; DMA通道x传输…...

reactor中的并发

1. reactor中的并发有两种方式 1.1 flatmap&#xff0c;底层是多线程并发处理。在reactor的演讲中&#xff0c;flatmap对于io类型的并发效果较好. flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小 注意凡是参数中有prefetch的&#xff0c;都…...

HTML - <script>,<noscript>

<script>标签用于在网页插入脚本&#xff0c;<noscript>标签用于指定浏览器不支持脚本时的显示内容。 1.<script> <script>用于加载脚本代码&#xff0c;目前主要是加载 JavaScript 代码。 <script> console.log(hello world); </script&g…...

C#语言的函数实现

C#语言的函数实现 在现代编程语言中&#xff0c;函数&#xff08;Function&#xff09;是最基本也是最重要的组成部分之一。函数不仅提高了代码的复用性&#xff0c;还使得程序结构更清晰。C#作为一种多用途的编程语言&#xff0c;函数的知识是程序员必备的基本技能之一。本文…...

JAVA I/O流练习1

往D盘中的JAVA复习文件夹中写数据&#xff1a; 数据改了一下哈&#xff1a; import java.io.*; import java.util.Scanner; public class Test {public static void main(String[] args) throws IOException {String fileName"D:JAVA复习\\grade.txt";FileWriter w…...

HTML——75. 内联框架

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内联框架</title><style type"text/css">iframe{width: 100%;height: 500px;}</style></head><body><!--iframe元素会创建包含…...

js获取当前浏览器地址,ip,端口号等等

前言&#xff1a; js获取当前浏览器地址&#xff0c;ip&#xff0c;端口号等等 window.location属性查询 具体属性&#xff1a; 1、获取他的ip地址 window.location.hostname 2、获取他的端口号 window.location.port 3、获取他的全路径 window.location.origin 4、获取…...

C++虚函数(八股总结)

什么是虚函数 虚函数是在父类中定义的一种特殊类型的函数&#xff0c;允许子类重写该函数以适应其自身需求。虚函数的调用取决于对象的实际类型&#xff0c;而不是指针或引用类型。通过将函数声明为虚函数&#xff0c;可以使继承层次结构中的每个子类都能够使用其自己的实现&a…...

【每日学点鸿蒙知识】跳转三方地图、getStringSync性能、键盘避让模式等

1、跳转三方地图导航页 类似于Android 跳转到地图APP 导航页面&#xff1a; // 目标地点的经纬度和名称 double destinationLat 36.547901; double destinationLon 104.258354; String destinationName "目的地名称"; // 构建URI Uri uri Uri.parse("…...

【线性代数】通俗理解特征向量与特征值

这一块在线性代数中属于重点且较难理解的内容&#xff0c;下面仅个人学习过程中的体会&#xff0c;错误之处欢迎指出&#xff0c;有更简洁易懂的理解方式也欢迎留言学习。 文章目录 概念计算几何直观理解意义 概念 矩阵本身就是一个线性变换&#xff0c;对一个空间中的向量应用…...

C#设计模式(行为型模式):备忘录模式,时光倒流的魔法

C#设计模式&#xff1a;备忘录模式&#xff0c;时光倒流的魔法 在软件开发中&#xff0c;我们经常会遇到需要保存对象状态&#xff0c;并在未来某个时刻恢复的场景。例如&#xff1a; 撤销操作&#xff1a; 文本编辑器中的撤销功能&#xff0c;游戏中的回退操作。事务回滚&am…...

服务器信息整理:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统

文章目录 引言I BIOS时间Windows查看BIOS版本安装日期linux查看BIOS时间II 操作系统安装日期LinuxWindowsIII MAC 地址IV 设备序列号Linux 查看主板信息知识扩展Linux常用命令引言 信息内容:重点信息:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统 Linux…...

用OpenCV实现UVC视频分屏

分屏 OpencvUVC代码验证后话 用OpenCV实现UVC摄像头的视频分屏。 Opencv opencv里有很多视频图像的处理功能。 UVC Usb 视频类&#xff0c;免驱动的。视频流格式有MJPG和YUY2。MJPG是RGB三色通道的。要对三通道进行分屏显示。 代码 import cv2 import numpy as np video …...

【C#学习】基类的静态变量 派生类会如何处理

来源GPT&#xff0c;仅记录学习 在C#中&#xff0c;子类继承父类的public static变量时&#xff0c;父类的静态变量对所有类&#xff08;包括子类&#xff09;都是共享的。子类并不会重新创建父类静态变量&#xff0c;而是共享父类的静态成员。 具体行为&#xff1a; 静态变量…...

Unity3D仿星露谷物语开发19之库存栏丢弃及交互道具

1、目标 从库存栏中把道具拖到游戏场景中&#xff0c;库存栏中道具数相应做减法或者删除道具。同时在库存栏中可以交换两个道具的位置。 2、UIInventorySlot设置Raycast属性 在UIInventorySlot中&#xff0c;我们只希望最外层的UIInventorySlot响应Raycast&#xff0c;他下面…...

SQL进阶实战技巧:如何利用 Oracle SQL计算线性回归置信区间?

目录 1 置信区间计算方法 步骤1:计算回归系数 步骤2:计算标准误差 步骤3:计算置信区间 2 数据准备 <...

计算机网络——网络层—IP数据报与分片

一、IP 数据报的格式 • 一个 IP 数据报由首部和数据两部分组成。 • 首部的前一部分是固定长度&#xff0c;共 20 字节&#xff0c;是所有 IP 数据报必须具有的。 • 在首部的固定部分的后面是一些可选字段&#xff0c;其长度是可变的。 IP 数据报首部的固定部分中的各字段 版…...

高山旅游景区有效降低成本,无人机山下到山上物资吊运技术详解

在高山旅游景区&#xff0c;传统的物资运输方式往往面临人力成本高昂、效率低下等问题&#xff0c;而无人机技术的引入为这一难题提供了新的解决方案。以下是对无人机从山下到山上进行物资吊运技术的详细解析&#xff1a; 一、无人机物资吊运技术的优势 1. 降低人力成本&#…...

Linux 注册线程化的中断处理程序

1. 注册线程化中断处理函数 devmem_request_threaded_irq 是 Linux 内核中的一个函数&#xff0c;用于请求并注册一个线程化的中断处理程序。这个函数允许开发者注册一个中断处理函数&#xff0c;这个函数会在中断发生时被调用&#xff0c;从而实现相应的中断处理逻辑。它通过…...

【狂热算法篇】解锁数据潜能:探秘前沿 LIS 算法

嘿&#xff0c;各位编程爱好者们&#xff01;今天带来的 LIS 算法简直太赞啦 无论你是刚入门的小白&#xff0c;还是经验丰富的大神&#xff0c;都能从这里找到算法的奇妙之处哦&#xff01;这里不仅有清晰易懂的 C 代码实现&#xff0c;还有超详细的算法讲解&#xff0c;让你轻…...

Linux: 关于 mount 的一些细节

文章目录 1. 前言2. mount 的主要细节 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. mount 的主要细节 mount 从系统调用 sys_mount() 发起&#xff0c;如 mount -t tmpfs cgroup /sys/fs/cg…...

CSS3——3. 书写格式二

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写&#xff1a;--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…...

Java-JVM详解

Java-JVM ①JVM概述 ❶基本介绍 JVM&#xff1a;全称 Java Virtual Machine&#xff0c;一个虚拟计算机&#xff0c;Java 程序的运行环境&#xff08;Java二进制字节码的运行环境&#xff09; 特点&#xff1a; Java 虚拟机基于二进制字节码执行&#xff0c;由一套字节码指…...

docker搭建atlassian-confluence:7.2.0

文章目录 引言I 部署前准备数据库镜像准备自己构建镜像dockerhub第三方镜像II 安装启动容器基础配置(获取服务器ID)授权码获取集群选择设置数据库配置管理员账号引言 准备数据库、镜像启动容器获取服务器ID根据服务器ID等信息,基于atlassian-agent.jar 授权I 部署前准备 数…...

YOLOv8实战人员跌倒检测

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对人员跌倒目标数据集进行训练和优化&#xff0c;该数据集包含丰富人员跌倒图像样…...

瑞芯微rk3568平台 openwrt系统适配ffmpeg硬件解码(rkmpp)

瑞芯微rk3568平台 openwrt系统适配ffmpeg硬件解码(rkmpp) RK3568及rkmpp介绍编译安装mpp获取源码交叉编译安装 libdrmlibdrm-2.4.89 make 方式编译(cannot find -lcairo, 不推荐)下载源码编译编译错误: multiple definition of `nouveau debug‘错误cannot find -lcairo:…...

自动驾驶控制与规划——Project 6: A* Route Planning

目录 零、任务介绍一、算法原理1.1 A* Algorithm1.2 启发函数 二、代码实现三、结果分析四、效果展示4.1 Dijkstra距离4.2 Manhatten距离4.3 欧几里德距离4.4 对角距离 五、后记 零、任务介绍 carla-ros-bridge/src/ros-bridge/carla_shenlan_projects/carla_shenlan_a_star_p…...

wordpress报错open_basedir restriction in effect

Warning: file_exists(): open_basedir restriction in effect. File(/www/wwwroot/wp-content/plugins/woocommerce/patterns/banner.php) is not within the allowed path(s): 关闭防跨站攻击...

VSCode Live Server 插件安装和使用

VSCode Live Server是一个由Ritwick Dey开发的Visual Studio Code扩展插件&#xff0c;它提供了一个带有实时重载功能的本地开发服务器。在VSCode中安装和使用Live Server插件进行实时预览和调试Web应用程序。这将大大提高前端开发效率&#xff0c;使网页设计和开发变得更为流畅…...

网络安全-XSS跨站脚本攻击(基础篇)

漏洞扫描的原理 1.跨站脚本攻击介绍 xss跨站脚本攻击&#xff1a; xSS 全称&#xff08;Cross site Scripting &#xff09;跨站脚本攻击&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年度分别为第三名和第七名&#xff0c;XSS是指攻…...

【C++笔记】红黑树(RBTree)深度剖析和AVL树的对比分析

【C笔记】红黑树(RBTree)深度剖析和AVL树的对比分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】红黑树(RBTree)深度剖析和AVL树的对比分析前言一.红黑树的定义1.1 红黑树的概念1.2红黑树的规则1.3 红黑树对比A…...

Mysql 性能优化:索引条件下推(ICP)

MySQL 索引下推&#xff08;Index Condition Pushdown&#xff0c;ICP&#xff09;是一种查询优化技术&#xff0c;旨在提高使用索引的查询效率。它是在 MySQL 5.6 中引入的&#xff0c;通过将部分 WHERE 子句的过滤条件下推到索引扫描阶段来减少不必要的回表操作&#xff0c;从…...

docker如何进入交互模式

目录 使用 docker run -it 使用 docker exec -it 示例&#xff1a; 使用 docker attach 示例&#xff1a; 在写代码的时候对小白来说避免不了本地和docker环境执行结果不一样的情况 这个时候需要进入正在运行的容器进行调试或执行一些命令操作。这时可以使用 Docker 提供的…...

闲谭SpringBoot--ShardingSphere分库分表探究

文章目录 1. 背景2. 创建数据库3. 修改yml配置文件4. 分片算法类5. 测试6 小结 1. 背景 接上文&#xff0c;我们对日志表&#xff0c;进行了按月的分表&#xff0c;这样每个月几百万条数据量还是扛得住的。 但是如果数据再多呢&#xff0c;除了提高硬件性能&#xff0c;还有一…...

在Java中Semaphore的解释及主要用途

目录 定义 使用方法 主要用途 使用场景示例 定义 Semaphore&#xff08;信号量&#xff09;是Java并发编程中的一个同步工具类&#xff0c;用于控制对共享资源的访问。它通过维护一个计数器来管理多个线程对资源的并发访问数量。这个计数器表示当前可用的许可数&#xff0c…...

React Native 项目 Error: EMFILE: too many open files, watch

硬件&#xff1a;MacBook Pro (Retina, 13-inch, Mid 2014) OS版本&#xff1a;MacOS BigSur 11.7.10 (20G1427) 更新: 删除modules的方法会有反弹&#xff0c;最后还是手动安装了预编译版本的watchman。 React Native 项目运行npm run web&#xff0c;出现如下错误&#xff1a…...

四、VSCODE 使用GIT插件

VSCODE 使用GIT插件 一下载git插件与git Graph插件二、git插件使用三、文件提交到远程仓库四、git Graph插件 一下载git插件与git Graph插件 二、git插件使用 git插件一般VSCode自带了git&#xff0c;就是左边栏目的图标 在下载git软件后vscode的git插件会自动识别当前项目 …...

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略&#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库&#xff0c;分机房部署&#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…...

flink的EventTime和Watermark

时间机制 Flink中的时间机制主要用在判断是否触发时间窗口window的计算。 在Flink中有三种时间概念&#xff1a;ProcessTime、IngestionTime、EventTime。 ProcessTime&#xff1a;是在数据抵达算子产生的时间&#xff08;Flink默认使用ProcessTime&#xff09; IngestionT…...

T-SQL语言的函数实现

T-SQL语言的函数实现 在数据库管理系统中&#xff0c;函数是一种非常重要的编程结构。SQL Server支持多种类型的函数&#xff0c;包括标量函数、表值函数和系统函数。本文将详细介绍T-SQL中函数的实现&#xff0c;结合实际应用场景&#xff0c;帮助读者深入理解函数的使用方法…...

SpringBoot 使用 Cache 集成 Redis做缓存保姆教程

1. 项目背景 Spring Cache是Spring框架提供的一个缓存抽象层&#xff0c;它简化了缓存的使用和管理。Spring Cache默认使用服务器内存&#xff0c;并无法控制缓存时长&#xff0c;查找缓存中的数据比较麻烦。 因此Spring Cache支持将缓存数据集成到各种缓存中间件中。本文已常…...