提问人:Nawal 提问时间:6/26/2022 更新时间:6/26/2022 访问量:327
ESP-IDF 相当于 Arduino 的 WiFiClient.write() 功能
ESP-IDF's equivalent of Arduino's WiFiClient.write() fucntionality
问:
我正在使用 ESP32-CAM 通过 ESP-IDF 框架进行视频流传输。我能够在 ESP32-CAM 上创建服务器并成功流式传输视频。对于流式传输,我使用带有标头的 HTTP 协议,它运行良好:)Content-Type: multipart/x-mixed-replace; boundary=" PART_BOUNDARY "\r\n
现在,我想在相机上添加一个伺服电机来远程调整平移。我想到了 2 种方法。
为伺服创建另一个端点,但为此我需要断开视频流,直到伺服请求完成。这在视频中造成了明显的滞后。
在视频流连接之间发送数据,并获得最小的视频延迟。
我能够在Arduino IDE中使用第二个选项,在那里我们可以选择在正在进行的请求中从客户端读取二进制数据。示例如下WebServer
// only showing the relevent code ...
// create server.
WebServer server(80);
// then register different endpoint handlers ...
// ...
// ...
void video_stream_handler(){
// initilize camera stuff, nothing to worry here
camera_fb_t * fb = NULL;
esp_err_t res = ESP_OK;
size_t _jpg_buf_len = 0;
uint8_t * _jpg_buf = NULL;
char buf[32];
sensor_t* sensor_settings = esp_camera_sensor_get();
sensor_settings->set_framesize(sensor_settings, FRAMESIZE_VGA);
sensor_settings->set_quality(sensor_settings, 20);
// get client handle
WiFiClient client = server.client();
// now we can write headers as well as data to client. this works in ESP-IDF as well :)
client.write(<some-headers>, <header-length>);
// now this is interesting.
// we can read from client as well
client.read(); // gives bytes read from client
我的问题是,esp-idf 可以做这样的事情吗? 或者,如果还有其他更好的选择吗?我希望在视频流中将延迟降至最低,同时在两者之间仍然执行伺服操作。
硬件:ESP32-CAM(单核),4MB PSRAM
PS 我正在使用 Python 套接字来读取/处理视频流并在持续连接中发送二进制数据。
答: 暂无答案
评论
Client.Write