大家好,又见面了,我是你们的朋友全栈君。
手上这个ESP32-CAM买回来已经放了一个学期了,最近才开始玩,试了试用它来实现视频传输。局域网的视频传输比较简单,基本能正确把例程烧进去就可以了,这篇文章主要记录一下远程视频传输的实现。
board_build.flash_mode = dout
烧写完成后,重启模块,用串口工具看输出信息,连接上wifi后,浏览器输入http://192.168.x.x
就可以看到操作界面了。(注意在同一个局域网)
东西还是有点多的,可以玩一下,就是感觉发热有点厉害。
路由器穿透的插件有很多,我主要试了frp和ddnsto。
可以参考文档。 简单来说就是在服务器上运行一个frps程序,然后在路由器上配置相应的信息,启用frp。 我的配置信息: 服务器端:
[common]
bind_port = 7252
token = 马赛克
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = xxxx
dashboard_pwd = xxxx
路由器端:
[common]
server_addr = 马赛克
server_port = 7252
token = 马赛克
[esp32cam]
type = tcp
local_ip = esp32cam的ip地址
local_port = 80
remote_port = 7001
路由器截图:
这个方法设置很简单,也可以不用自己的服务器,参考帖子。
访问时可能会报错Header fields are too long for server to interpret
,可以尝试更换浏览器(我换成edge就好了),或者试着修改代码:
这两种内网穿透方法的速度都很快,跟局域网差别不大,只是发现只能传图像,不能传视频(应该是代码的问题,还没搞明白😭)。
虽然根据官方的教程和代码,虽然有修改为AI Thinker的接线方式,可是还是会报错:
E (1582) ledc: requested frequency and duty resolution can not be achieved, try reducing freq_hz or duty_resolution. div_param=3
E (1592) camera_xclk: ledc_timer_config failed, rc=ffffffff
I (1602) sccb: pin_sda 26 pin_scl 27
I (1602) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
E (1662) camera: Detected camera not supported.
E (1662) camera: Camera probe failed with error 0x20004
E (1662) app_camera: Camera init failed with error 0x20004
解决方法参考这里,在xclk.c添加一行代码timer_conf.clk_cfg = LEDC_USE_APB_CLK;
ledc_timer_config_t timer_conf;
timer_conf.duty_resolution = 2;
timer_conf.freq_hz = config->xclk_freq_hz;
timer_conf.speed_mode = LEDC_HIGH_SPEED_MODE;
timer_conf.timer_num = config->ledc_timer;
timer_conf.clk_cfg = LEDC_USE_APB_CLK;
esp_err_t err = ledc_timer_config(&timer_conf);
if (err != ESP_OK) {
ESP_LOGE(TAG, "ledc_timer_config failed, rc=%x", err);
return err;
}
串口输出
app显示
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128898.html原文链接:https://javaforall.cn