M5 x timer camera

I have a m5 x timer camera I'm plugging directly into my computer. I'm trying to make a code to make a live video stream using an arduino idea code but I've been having no luck. I thought perhaps I could stream a video on vlc media player but I've just been getting errors on vlc media plays on not being able to play the stream. Any suggestions?

#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "esp_camera.h"

// Pin definitions for M5Stack Timer-CAM
#define PWDN_GPIO_NUM    -1
#define RESET_GPIO_NUM   15
#define XCLK_GPIO_NUM    27
#define SIOD_GPIO_NUM    25
#define SIOC_GPIO_NUM    23
#define Y9_GPIO_NUM      19
#define Y8_GPIO_NUM      36
#define Y7_GPIO_NUM      18
#define Y6_GPIO_NUM      39
#define Y5_GPIO_NUM       5
#define Y4_GPIO_NUM      34
#define Y3_GPIO_NUM      35
#define Y2_GPIO_NUM      32
#define VSYNC_GPIO_NUM   22
#define HREF_GPIO_NUM    26
#define PCLK_GPIO_NUM    21

// WiFi credentials
const char* ssid = 
const char* password = 

// AsyncWebServer instance
AsyncWebServer server(80);

bool initCamera() {
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;
  config.frame_size = FRAMESIZE_QVGA; // Adjust frame size for streaming
  config.jpeg_quality = 10; // Adjust quality for video
  config.fb_count = 2; // Use multiple frame buffers

  esp_err_t result = esp_camera_init(&config);
  
  if (result != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", result);
    return false;
  }

  return true;
}

void handleStream(AsyncWebServerRequest *request) {
  AsyncResponseStream *response = request->beginResponseStream("multipart/x-mixed-replace; boundary=frameboundary");
  response->addHeader("Cache-Control", "no-store");
  
  auto frameCallback = [](uint8_t *buffer, size_t maxLen, size_t index) -> size_t {
    camera_fb_t *frame = esp_camera_fb_get();
    if (!frame) {
      Serial.println("Failed to capture frame");
      return 0;
    }
    size_t frameSize = frame->len;
    if (frameSize > maxLen) {
      frameSize = maxLen;
    }
    memcpy(buffer, frame->buf, frameSize);
    esp_camera_fb_return(frame);
    return frameSize;
  };

  response->setContentLength(CONTENT_LENGTH_UNKNOWN);
  response->addHeader("Content-Type", "multipart/x-mixed-replace; boundary=frameboundary");
  response->setWriteCallback(frameCallback);
  request->send(response);
}

void setup() {
  Serial.begin(115200);

  if (!initCamera()) {
    Serial.println("Failed to initialize camera");
    return;
  }

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("WiFi connected");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // Routes for handling requests
  server.on("/stream", HTTP_GET, handleStream);

  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
  // This loop is intentionally left empty because all operations are handled in callbacks.
}

With the information you posted, it is very difficult to help you.
What is M5 x timer camera?
Do you have a datasheet for this product?
Is it compatible with the Arduino IDE?

Are there any errors when compiling your code?

Anything you can tell us about the product and your project helps us help you.

I recommend that you read the topic,

especially the part about project information.

Your topic has been moved to a more suitable location on the forum.

You have, for now, the benefit of the doubt that this is not a cross-post. Please explain why you started a new topic instead of continuing in Help finding this esp32 Arduino ide code.

Cross-posting wastes people's time.

And please explain your problem properly if it differs from the other topic.

sorry I have included the code in the post, I accidentally forgot to upload the code, the vlc media player just says an error when I try to run the stream

sorry I accidentally forgot to paste the code in the post, I have uploaded the code. I have made a new post with a code that I have been working on myself, the other post was trying to find the source for that code. this post is for a totally different code trying to fix the error in not running a video stream on vlc media player

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.