基于ESP32-CAM的RSTP协议网络摄像头

       本次介绍的程序是使用ESP32-CAM进行图像采集并将图像以RTSP协议进行无线传输。在同网络的PC上使用软件对摄像头的图像进行拉取观看。

开发环境:Arduino。

程序语言:C语言。

ESP32-CAM:

        ESP32-CAM是安信可最新发布小尺寸的摄像头模组。该模块可以作为最小系统独立工作,尺寸仅为27*40.5*4.5mm,深度睡眠电流最低达到6mA。

       ESP32-CAM可广泛应用于各种物联网场合,适用于家庭智能设备、工业无线控制、无线监控、QR无线识别,无线定位系统信号以及其它物联网应用,是物联网应用的理想解决方案。

        ESP32-CAM采用DIP封装,直接插上底板即可使用,实现产品的快速生产,为客户提供高可靠性的连接方式,方便应用于各种物联网硬件终端场合。

体积超小的802.11b/g/n Wi-Fi + BT/BLE SoC模块

产品特性

采用低功耗双核32位CPU,可作应用处理器

主频高达240MHz,运算能力高达 600 DMIPS

内置 520 KB SRAM,外置8MB PSRAM

支持UART/SPI/I2C/PWM/ADC/DAC等接口

支持OV2640和OV7670摄像头,内置闪光灯

支持图片WiFI上传

支持TF卡

支持多种休眠模式。

内嵌Lwip和FreeRTOS。

支持 STA/AP/STA+AP 工作模式。

支持 Smart Config/AirKiss 一键配网。

支持二次开发。

RTSP协议:

        Real Time Streaming Protocol,RFC2326,实时流传输协议,RTSP是 TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。

 

        RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断,包括消息类型、消息头、消息体和消息长。但接收者本身可将CR和LF解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更容易,接口中采用SDP作为描述语言。

      本文介绍的方法使用方法是基于Arduino开发环境实现的。用到的开源库名称为:Micro-RTSP。库文件可以在github上搜索到,代码资源也上传到网盘,文末有相应的获取方式。

        将Micro-RTSP-master库添加到Arduino软件中。

        安装成功后,在第三方库示例中就可以找到例程。

        例程打开以后首先需要在wifikeys.h文件中设置一下WiFi名称和WiFi密码。

        然后需要修改宏定义。第一个宏定义是OLED显示器,如果你的ESP32 CAM有I2C接口OLED显示器,可以打开这个宏定义,并设置对应的引脚这样就可以使用显示器显示对应的输出信息;第二个宏定义是接入点模式,这种模式下ESP32会作为接入点,创建一个WIFI;第三个宏定义是使能web服务器,使能web服务器后可以在浏览器访问ESP32的IP地址就可以实时获取其图像信息;第四个是使能RTSP服务器,使能后即可通过RTSP端口获取到图像信息。可以根据需要开启对应的宏定义。

        修改完宏定义信息后,还需要根据ESP32 CAM的硬件信息修改下面的配置,我这里使用的是安信可生产的ESP32 CAM,修改对应的配置信息即可。

 

        修改完成后即可上传,上传成功后可以通过串口或路由器配置界面查看EPS32 CAM联网后的IP。然后打开VLC播放器。

 

        依次选择“媒体”->“打开网络串流”。然后输入rtsp://“IP地址”:8554/mjpeg/2。最后点击“播放”,等待连接成功后就可以显示出摄像头图像。

 

        RTSP传输的方式延迟较大。

 

ESP32CAM是一款集成了摄像头模块的ESP32开发板,常用于物联网项目中的图像采集和传输。RTSP(Real Time Streaming Protocol)是一种用于实时数据传输的协议,广泛应用于视频流传输。使用ESP32CAM进行RTSP推流可以实现实时视频监控功能。 以下是ESP32CAM进行RTSP推流的基本步骤: 1. **硬件准备**: - ESP32CAM开发板 - FTDI编程器(用于烧录代码) - 连接线 2. **软件准备**: - Arduino IDE - ESP32开发板支持包 - RTSP推流库(如ESP32-RTSP库) 3. **配置Arduino IDE**: - 安装ESP32开发板支持包:在Arduino IDE中,进入`文件` -> `首选项`,在`附加开发板管理器网址`中添加`https://dl.espressif.com/dl/package_esp32_index.json`,然后进入`工具` -> `开发板` -> `开发板管理器`,搜索`ESP32`并安装。 - 安装RTSP推流库:在Arduino IDE中,进入`工具` -> `库管理器`,搜索`ESP32-RTSP`并安装。 4. **编写代码**: - 打开Arduino IDE,创建一个新的草图。 - 引入必要的库: ```cpp #include <WiFi.h> #include <esp_camera.h> #include <RtspServer.h> ``` - 配置WiFi和摄像头参数: ```cpp const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // 摄像头配置,根据具体的ESP32CAM模块进行调整 camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = 5; config.pin_d1 = 18; config.pin_d2 = 19; config.pin_d3 = 21; config.pin_d4 = 36; config.pin_d5 = 39; config.pin_d6 = 34; config.pin_d7 = 35; config.pin_xclk = 0; config.pin_pclk = 22; config.pin_vsync = 25; config.pin_href = 23; config.pin_sscb_sda = 26; config.pin_sscb_scl = 27; config.pin_pwdn = 32; config.pin_reset = -1; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_RGB565; config.frame_size = FRAMESIZE_VGA; config.jpeg_quality = 10; config.fb_count = 2; ``` - 初始化WiFi和摄像头: ```cpp void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } rtsp_server.begin(); } ``` - 主循环: ```cpp void loop() { rtsp_server.send_frame(); } ``` 5. **上传代码并测试**: -ESP32CAM连接到电脑,使用FTDI编程器进行烧录。 - 打开串口监视器,观察连接状态。 - 使用支持RTSP的播放器(如VLC)打开`rtsp://<ESP32CAM_IP>:8554/mjpeg`进行视频流播放。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西天取经的熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值