diff --git a/lib/micro-rtsp-server/include/micro_rtsp_server.h b/lib/micro-rtsp-server/include/micro_rtsp_server.h index d30983e..3b63053 100644 --- a/lib/micro-rtsp-server/include/micro_rtsp_server.h +++ b/lib/micro-rtsp-server/include/micro_rtsp_server.h @@ -12,9 +12,12 @@ class micro_rtsp_server : WiFiServer { public: - micro_rtsp_server(const micro_rtsp_camera& source, unsigned frame_interval = 100, unsigned short port = 554); + micro_rtsp_server(const micro_rtsp_camera& source, unsigned frame_interval = 100); ~micro_rtsp_server(); + void begin(unsigned short port = 554); + void end(); + unsigned get_frame_interval() { return frame_interval_; } unsigned set_frame_interval(unsigned value) { return frame_interval_ = value; } diff --git a/lib/micro-rtsp-server/src/micro_rtsp_camera.cpp b/lib/micro-rtsp-server/src/micro_rtsp_camera.cpp index 945731c..f64d995 100644 --- a/lib/micro-rtsp-server/src/micro_rtsp_camera.cpp +++ b/lib/micro-rtsp-server/src/micro_rtsp_camera.cpp @@ -14,12 +14,13 @@ micro_rtsp_camera::~micro_rtsp_camera() esp_err_t micro_rtsp_camera::initialize(camera_config_t *camera_config) { - init_result = esp_camera_init(camera_config); if (init_result == ESP_OK) update_frame(); else - log_e("Camera initialization failed: 0x%x", init_result); + log_e("Camera initialization failed: 0x%02x", init_result); + + return init_result; } esp_err_t micro_rtsp_camera::deinitialize() diff --git a/lib/micro-rtsp-server/src/micro_rtsp_server.cpp b/lib/micro-rtsp-server/src/micro_rtsp_server.cpp index 9fdf770..ec80c4c 100644 --- a/lib/micro-rtsp-server/src/micro_rtsp_server.cpp +++ b/lib/micro-rtsp-server/src/micro_rtsp_server.cpp @@ -3,15 +3,13 @@ #include // Check client connections every 100 milliseconds -#define CHECK_CLIENT_INTERVAL 100 -#define STREAM_NAME "mjpeg/1" +#define CHECK_CLIENT_INTERVAL 10 -micro_rtsp_server::micro_rtsp_server(const micro_rtsp_camera &source, unsigned frame_interval /*= 100*/, unsigned short port /*= 554*/) +micro_rtsp_server::micro_rtsp_server(const micro_rtsp_camera &source, unsigned frame_interval /*= 100*/) : source_(source) { log_i("starting RTSP server"); frame_interval_ = frame_interval; - begin(port); } micro_rtsp_server::~micro_rtsp_server() @@ -19,6 +17,16 @@ micro_rtsp_server::~micro_rtsp_server() end(); } +void micro_rtsp_server::begin(unsigned short port /*= 554*/) +{ + WiFiServer::begin(port); +} + +void micro_rtsp_server::end() +{ + WiFiServer::end(); +} + void micro_rtsp_server::loop() { auto now = millis(); diff --git a/platformio.ini b/platformio.ini index 8d604e2..3c7424c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -37,7 +37,7 @@ framework = arduino #upload_flags = --auth='ESP32CAM-RTSP' # Partition scheme for OTA -board_build.partitions = min_spiffs.csv +#board_build.partitions = max_spiffs.csv monitor_speed = 115200 monitor_rts = 0 diff --git a/src/main.cpp b/src/main.cpp index 1089c3b..34c6008 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -303,6 +303,8 @@ void update_camera_settings() void start_rtsp_server() { log_v("start_rtsp_server"); + + server.begin(RTSP_PORT); // Add RTSP service to mDNS // HTTP is already set by iotWebConf MDNS.addService("rtsp", "tcp", RTSP_PORT); @@ -393,17 +395,17 @@ void setup() // Try to initialize 3 times for (auto i = 0; i < 3; i++) { + log_i("Initializing camera..."); camera_init_result = initialize_camera(); if (camera_init_result == ESP_OK) - { - update_camera_settings(); break; - } - log_e("Failed to initialize camera. Error: 0x%0x. Frame size: %s, frame rate: %d ms, jpeg quality: %d", camera_init_result, param_frame_size.value(), param_frame_duration.value(), param_jpg_quality.value()); + log_e("Failed to initialize camera. Error: 0x%04x. Frame size: %s, frame rate: %d ms, jpeg quality: %d", camera_init_result, param_frame_size.value(), param_frame_duration.value(), param_jpg_quality.value()); delay(500); } + update_camera_settings(); + // Set up required URL handlers on the web server web_server.on("/", HTTP_GET, handle_root); web_server.on("/config", [] @@ -421,7 +423,7 @@ void loop() { iotWebConf.doLoop(); - server.loop(); + server.loop(); sleep(0); } \ No newline at end of file