This commit is contained in:
Rene Zeldenthuis
2024-02-15 22:33:42 +01:00
parent f05932b896
commit 152c068f68
5 changed files with 27 additions and 13 deletions

View File

@@ -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; }

View File

@@ -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()

View File

@@ -3,15 +3,13 @@
#include <memory>
// 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();

View File

@@ -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

View File

@@ -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", []