本帖最后由 cenly60 于 2026-9-21 12:24 编辑
为啥要搞这个出租屋,一室一厅,门口放快递总不放心。买成品摄像头吧,便宜的云服务要钱,不要钱的画质糊成马赛克。正好手头有块正点原子的 ATK-DNESP32S3,寻思着能不能自己搞一个。 说实话一开始心里没底。ESP32-S3 这芯片做视频流,网上有人说行有人说不行,到底怎样得自己试了才知道。 项目(GITHUB)G已开源:github.com/tangeai/xiaotai-esp32 项目地址:xiaotai.chat 板子到手先干一件事:把 PSRAM 打开这块板子用的是 ESP32-S3R8,8MB PSRAM。听起来挺多是吧?但默认配置下它是不开的。 我就是那个没开 PSRAM 就直接跑摄像头例程的憨憨。esp_camera_init 返回错误,查了半天才发现要在 menuconfig 里手动勾 Octal Mode PSRAM。而且 Flash 也得改成 16MB,不然编译出来的固件塞不进去。 这两个坑踩完,摄像头才算跑起来。 视频流:MJPEG 是唯一的选择ESP32-S3 做 H.264 软编码基本别想,算力不够。MJPEG 就是每一帧拍一张 JPEG 传出去,简单粗暴,但能跑。 我用的是 HTTP 流方案:开发板当 Web 服务器,手机浏览器直接访问 IP 就能看。局域网内延迟还行,大概半秒左右,看个门口有没有人足够了。 但有个问题:Wi-Fi 信号一弱,画面就卡成 PPT。ESP32-S3 板载的是 PCB 天线,穿墙能力就那样。后来我把分辨率降到 VGA,JPEG 质量调中等,帧率锁 10fps,才算稳定。想看高清的可以绕道了,这板子跑不动。 对讲功能:比想象中折腾视频搞定了,想着加个对讲呗,结果这才是真正花时间的地方。 硬件上开发板自带的模拟麦克风和 ES8388 编解码是够用的,但官方例程只做基础录音播放,回声消除得自己搞。我一开始没做 AEC,手机端一开扬声器就啸叫,那声音简直了。 后来参考了乐鑫官方的可视对讲方案,用 WebSocket 传音频,加上简单的回声抑制,才算能听。局域网内延迟 200ms 左右,通话清晰度就那样吧,反正听个"快递放门口了"没问题。 外网的话延迟会飘,得配合 Jitter Buffer 处理抖动,体验勉强及格。想追求微信语音那种效果的,建议直接放弃。 踩坑记录坑一:摄像头初始化失败
原因前面说了,PSRAM 没开。另外摄像头排线一定要插紧,我一开始没插到底,查了一晚上代码。 坑二:扬声器爆音
ES8388 的 GPIO 初始化顺序有讲究。I2S 时钟没稳定之前就打开功放,就会"啪"一声。解决办法:i2s_driver_install 成功之后再使能 PA,加 100ms 延时。 坑三:视频卡顿
除了 Wi-Fi 信号问题,还有一个原因是 JPEG 编码占内存。双缓冲没配好的话,采集和发送会抢资源。后来改成单缓冲+丢帧策略,反而更流畅了。 目前的状态能远程查看,通过底层用webrtc连接,能听,能喊话,也集成了AI对讲功能。 值不值得买?如果你是想快速做个能用的东西,那直接买成品摄像头吧,别折腾了。 但如果你跟我一样,想搞清楚音视频传输到底是怎么回事,想自己控制每一行代码,那用开发板从头搭一个,收获会大得多。 正点原子这块 DNESP32S3,资料全、外设齐、社区活跃,作为入门板子没什么可挑的。摄像头接口、音频编解码、麦克风、扬声器接口都焊好了,省了自己画扩展板的麻烦。遇到问题还有技术交流群可以问,比自己在网上瞎搜强。
|