# esp32camera **Repository Path**: CanFlyhang/esp32camera ## Basic Information - **Project Name**: esp32camera - **Description**: 这个仓库是基于ESP32系列开发板的摄像头示例代码存储站 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-16 - **Last Updated**: 2026-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## ESP32S3N16R8CAM HTTP 视频流示例工程 本工程基于 ESP32-S3-N16R8 核心开发板与板载 OV2640 摄像头(CV-JH640-38V1),演示如何通过 **内置 WiFi** 将摄像头图像以 **MJPEG 视频流** 的形式推送到局域网,使用浏览器访问固定 IP 地址即可查看实时画面。 ### 功能概述 - 使用 `esp32-camera` 驱动初始化 OV2640 摄像头; - 使用 `esp_wifi` 将 ESP32 连接到家用路由器(STA 模式); - 使用 `esp_http_server` 在端口 80 启动 HTTP 服务器: - `GET /` 返回简单网页,内嵌 ``; - `GET /stream` 以 `multipart/x-mixed-replace` 方式持续推送 JPEG 帧(MJPEG 视频流); - 电脑或手机只需与开发板处于同一局域网内,在浏览器中访问 `http://<板子IP>/` 即可看到实时视频。 ### 工程结构 - `main/main.c`:核心应用代码,包含摄像头初始化、WiFi 连接与 HTTP 视频流逻辑; - `main/CMakeLists.txt`:主组件 CMake 配置,声明对 `esp32-camera`、`esp_http_server`、`esp_wifi` 等组件的依赖; - `main/idf_component.yml`:通过组件管理器拉取 `esp32-camera` 等外部组件(如使用); - `uart_camera_viewer.py`:串口接收与调试脚本(早期版本通过 USB-UART 传输 JPEG 帧,可作为参考或调试用); - 其它文件为 ESP-IDF 标准工程模板相关。 ### 开发环境 - 开发框架:ESP-IDF v5.x(示例基于 v5.3.1 开发); - 目标芯片:ESP32-S3(N16R8 模组,板载 PSRAM); - 编译环境:Windows(使用官方 ESP-IDF 工具链)。 ### 配置 WiFi 1. 在工程目录下打开 ESP-IDF 终端: ```bash idf.py menuconfig ``` 2. 找到 `Example Configuration` 菜单,配置: - `ESP_WIFI_SSID`:你的 2.4GHz WiFi 名称(例如:`Xiaomi_AC82`); - `ESP_WIFI_PASSWORD`:对应 WiFi 密码。 3. 保存并退出 `menuconfig`。 > 注意:ESP32 仅支持 2.4GHz WiFi,请确保路由器开启了 2.4GHz 频段,并使用该 SSID。 ### 编译与烧录 在工程根目录执行: ```bash idf.py set-target esp32s3 idf.py build idf.py -p COMx flash monitor ``` 其中 `COMx` 替换为你实际的串口号(例如 `COM19`)。 ### 运行与访问视频流 1. 开发板上电并成功运行后,在串口日志中可以看到类似输出: ```text I (...) wifi:connected with Xiaomi_AC82, ... I (...) esp_netif_handlers: sta ip: 192.168.31.185, mask: 255.255.255.0, gw: 192.168.31.1 I (...) APP: got ip: 192.168.31.185 I (...) APP: camera_init success, start http server ``` 2. 确保你的电脑或手机连接的是同一个路由器(`ESP_WIFI_SSID` 对应的 WiFi),并处在同一网段(例如 `192.168.31.x`)。 3. 在浏览器地址栏中输入: ```text http://192.168.31.185/ ``` 即可看到简单的网页页面,其中嵌入了实时 MJPEG 视频流。 4. 如需直接访问视频流接口,也可以使用: ```text http://192.168.31.185/stream ``` ### 分辨率与画质调整 在 `main/main.c` 的摄像头配置中,当前示例采用: - 分辨率:`FRAMESIZE_QQVGA`(尽量降低内存占用,保证在 PSRAM / DRAM 条件受限时稳定运行); - JPEG 质量:`jpeg_quality = 15`(数值越小画质越高、数据量越大)。 你可以根据实际需求调整: - 将 `FRAMESIZE_QQVGA` 提升为 `FRAMESIZE_QVGA` 或更高(需根据内存与带宽情况评估); - 适当调小 `jpeg_quality` 数值以提升画质,同时注意网络带宽与帧率的平衡。 ### 注意事项 - 路由器若开启了“无线客户端隔离 / AP 隔离 / 访客网络隔离”,可能导致同一 WiFi 下设备之间不能互相访问,请在路由器管理界面中关闭相关选项; - 如需固定板子在局域网中的 IP,推荐在路由器的 DHCP 设置中,通过绑定 ESP32 的 MAC 地址的方式为其分配固定 IP; - `uart_camera_viewer.py` 脚本依赖 OpenCV,如在某些无 GUI 环境下 `cv2.imshow` 报错,可改为将帧保存为 JPEG 文件进行调试。 ### 授权与贡献 本示例工程主要用于学习与参考,你可以自由克隆、修改和扩展。 如果在使用过程中发现问题或有改进建议,欢迎在仓库中提交 Issue 或 Pull Request。