# camera_stream **Repository Path**: Lelin_star/camera_stream ## Basic Information - **Project Name**: camera_stream - **Description**: 这是一个让esp32cam网络图传项目,即通过wifi实时传输视频流,程序是使用idf编写的,运行后设备自动连接wifi,同局域网下的其他设备访问esp32可以读取到实时视频流,可以用于网络监控、无人机、遥控车等。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 📖 项目名称 ESP32-CAM wifi传输视频流项目 🚀 项目简介 这是一个基于 ESP-IDF 5.4.1 的 ESP32 程序,用于实现通过摄像头捕获图像并上传,在同一局域网下的其他设备可以访问设备后获得实时视频流。 📋 前置条件 在开始之前,请确保您的开发环境满足以下条件: • ESP-IDF 环境:已安装 ESP-IDF 开发框架,版本为 v5.4.1。 • 硬件准备: ◦ 一块 ESP32cam 开发板(具体支持的型号见下文)。 ◦ 摄像头模块ov2640。 ![esp32cam](esp32cam.jpg) 🔧 硬件配置 本项目支持以下 ESP32 型号,请在 camera.h 文件中根据您的硬件进行选择和修改: • BOARD_WROVER_KIT • BOARD_ESP32CAM_AITHINKER • BOARD_ESP32S3_WROOM • BOARD_ESP32S3_GOOUUU • BOARD_ESP32S3_XIAO 如有其他类型的esp32请在camera_pinout.h中自行添加。 在文件camera.c中,可自行调节的几个参数如下: ``` camera_config_t camera_config = { ... .pixel_format = PIXFORMAT_JPEG, // 设置图像格式为JPEG格式。可选值包括YUV422、GRAYSCALE、RGB565和JPEG。选择JPEG格式会在传输前压缩图像,显著节省内存和网络带宽,适合大多数需要传输或存储图像的场景。 .frame_size = FRAMESIZE_QVGA, // 设置图像分辨率为QVGA(320x240像素)。可选的尺寸范围从极小的QQVGA到高清的UXGA。对于ESP32标准系列,当不使用JPEG格式时,不建议使用超过QVGA的分辨率,否则性能会大幅下降。ESP32-S系列的性能已有很大提升,但使用JPEG格式通常仍能获得更好的帧率。 .jpeg_quality = 12, // 设置JPEG图像的压缩质量,范围为0到63。数值越低表示质量越高、文件越大,数值越高表示压缩率越高、文件越小但质量越差。对于OV系列摄像头传感器,通常推荐在10-15之间取得平衡。 .fb_count = 2, // 设置帧缓冲区数量为2。当使用JPEG模式时,如果fb_count大于1,驱动程序将工作在连续模式,这意味着它可以预先捕获下一帧图像,从而减少丢帧、提高整体帧率。增加帧缓冲区数量会消耗更多内存。 } ``` 📡 网络配置 Wi-Fi 的账号和密码需要在 wifi.h 文件中修改。 🛠️ 编译与烧录 1. 克隆项目: ``` git clone https://gitee.com/Lelin_star/camera_stream ``` ``` cd camera_stream ``` 2. 配置 IDF 环境:确保你的 ESP-IDF 环境已配置好。 3. 打开idf终端,设置目标芯片(可选,如果你在 camera.h 中修改了型号,可能需要执行): ``` idf.py set-target esp32s3 # 请将 esp32s3 替换为你的实际芯片型号,如 esp32 ``` 4. 编译工程: idf.py build ``` idf.py build ``` 5. 烧录程序:将开发板连接至电脑,然后运行: ``` idf.py -p PORT flash # 请将 PORT 替换为你的实际串口(如 COM3 或 /dev/ttyUSB0) ``` 6. 监视串口输出: ``` idf.py -p PORT monitor ``` 要退出监视器,可以使用快捷键 Ctrl+]。 💡 使用说明 程序烧录成功后,开发板将自动启动。打开串口监视器查看日志输出,正常如果连接wifi成功后一般会出现如下信息: ``` I (13722) wifi:dp: 1, bi: 102400, li: 3, scale listen interval from 307200 us to 307200 us I (13727) wifi:set rx beacon pti, rx_bcn_pti: 0, bcn_timeout: 25000, mt_pti: 0, mt_time: 10000 I (13750) wifi:dp: 2, bi: 102400, li: 4, scale listen interval from 307200 us to 409600 us I (13751) wifi:AP's beacon interval = 102400 us, DTIM period = 2 I (14769) esp_netif_handlers: sta ip: 192.168.43.82, mask: 255.255.255.0, gw: 192.168.43.1 I (14769) wifi: 成功获取IP地址: 192.168.43.82 I (14771) wifi: 视频流访问地址: http://192.168.43.82/stream I (24404) wifi:idx:0 (ifx:0, c2:04:ce:cb:55:98), tid:0, ssn:1, winSize:64 ``` 其中ip地址因设备而异,复制http://192.168.43.82/stream后在同局域网下的设备中输入浏览器即可访问视频流。 效果如下: ![视频流](%E8%A7%86%E9%A2%91%E6%B5%81.jpg) 📁 项目文件结构 ``` camera_stream/ ├── main/ │ ├── main.c │ ├── wifi.h # WiFi 配置头文件 │ ├── wifi.c │ ├── server.c │ ├── server.h │ ├── camera.h # 摄像头配置与型号选择头文件 │ ├── camera_pinout.h │ ├── camera.c │ ├── idf_component.yaml │ └── CMakeList.txt ├── managed_components ├── CMakeLists.txt └── README.md # 本文档 ``` 🫱 贡献 欢迎提交 Issue 和 Pull Request 来改进本项目。