我玩的是 ESP32-CAM。我有一个在结构中编码为 jpg 的图像,就像这样
typedef struct {
uint8_t * buf; /*!< Pointer to the pixel data */
size_t len; /*!< Length of the buffer in bytes */
size_t width; /*!< Width of the buffer in pixels */
size_t height; /*!< Height of the buffer in pixels */
pixformat_t format; /*!< Format of the pixel data */
struct timeval timestamp; /*!< Timestamp since boot of the first DMA buffer of the frame */
} camera_fb_t;
原始图像数据似乎是一个 uint8_t 数组。
我想通过 websocket 连接发送这个图像数据。二进制数据的发送函数具有以下语法
esp_websocket_client_send(client,(char *)fb->buf, 1000, portMAX_DELAY);
如果将指针格式从 char 更改为 uint8_t,则会出现编译器错误。所以我使用上面的语法。它似乎仍然有效,python websockets 服务器接收某种数据。在 python 中,当打印到服务器终端时,数据看起来像这样。
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x0 etc.
我想知道我是否以合适的数据格式发送二进制 jpg 数据?我的意思是,将 uint8 数组解释为 char 数组似乎有点奇怪。我应该在发送之前对它进行不同的编码吗?