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 class micro_rtsp_server : WiFiServer
{ {
public: 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(); ~micro_rtsp_server();
void begin(unsigned short port = 554);
void end();
unsigned get_frame_interval() { return frame_interval_; } unsigned get_frame_interval() { return frame_interval_; }
unsigned set_frame_interval(unsigned value) { return frame_interval_ = value; } 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) esp_err_t micro_rtsp_camera::initialize(camera_config_t *camera_config)
{ {
init_result = esp_camera_init(camera_config); init_result = esp_camera_init(camera_config);
if (init_result == ESP_OK) if (init_result == ESP_OK)
update_frame(); update_frame();
else 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() esp_err_t micro_rtsp_camera::deinitialize()

View File

@@ -3,15 +3,13 @@
#include <memory> #include <memory>
// Check client connections every 100 milliseconds // Check client connections every 100 milliseconds
#define CHECK_CLIENT_INTERVAL 100 #define CHECK_CLIENT_INTERVAL 10
#define STREAM_NAME "mjpeg/1"
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) : source_(source)
{ {
log_i("starting RTSP server"); log_i("starting RTSP server");
frame_interval_ = frame_interval; frame_interval_ = frame_interval;
begin(port);
} }
micro_rtsp_server::~micro_rtsp_server() micro_rtsp_server::~micro_rtsp_server()
@@ -19,6 +17,16 @@ micro_rtsp_server::~micro_rtsp_server()
end(); 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() void micro_rtsp_server::loop()
{ {
auto now = millis(); auto now = millis();

View File

@@ -37,7 +37,7 @@ framework = arduino
#upload_flags = --auth='ESP32CAM-RTSP' #upload_flags = --auth='ESP32CAM-RTSP'
# Partition scheme for OTA # Partition scheme for OTA
board_build.partitions = min_spiffs.csv #board_build.partitions = max_spiffs.csv
monitor_speed = 115200 monitor_speed = 115200
monitor_rts = 0 monitor_rts = 0

View File

@@ -303,6 +303,8 @@ void update_camera_settings()
void start_rtsp_server() void start_rtsp_server()
{ {
log_v("start_rtsp_server"); log_v("start_rtsp_server");
server.begin(RTSP_PORT);
// Add RTSP service to mDNS // Add RTSP service to mDNS
// HTTP is already set by iotWebConf // HTTP is already set by iotWebConf
MDNS.addService("rtsp", "tcp", RTSP_PORT); MDNS.addService("rtsp", "tcp", RTSP_PORT);
@@ -393,17 +395,17 @@ void setup()
// Try to initialize 3 times // Try to initialize 3 times
for (auto i = 0; i < 3; i++) for (auto i = 0; i < 3; i++)
{ {
log_i("Initializing camera...");
camera_init_result = initialize_camera(); camera_init_result = initialize_camera();
if (camera_init_result == ESP_OK) if (camera_init_result == ESP_OK)
{
update_camera_settings();
break; 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); delay(500);
} }
update_camera_settings();
// Set up required URL handlers on the web server // Set up required URL handlers on the web server
web_server.on("/", HTTP_GET, handle_root); web_server.on("/", HTTP_GET, handle_root);
web_server.on("/config", [] web_server.on("/config", []
@@ -421,7 +423,7 @@ void loop()
{ {
iotWebConf.doLoop(); iotWebConf.doLoop();
server.loop(); server.loop();
sleep(0); sleep(0);
} }