@@ -125,6 +125,12 @@ bool MediaServerApp::start()
125125 if (_config.mode == Config::Mode::Record) {
126126 fs::mkdirr (_config.recordDir );
127127 }
128+ if (_config.mode == Config::Mode::Stream && _config.vision .enabled ) {
129+ if (_config.vision .snapshots .enabled )
130+ fs::mkdirr (_config.vision .snapshots .dir );
131+ if (_config.vision .clips .enabled )
132+ fs::mkdirr (_config.vision .clips .dir );
133+ }
128134
129135 _startedAt = std::chrono::steady_clock::now ();
130136
@@ -180,6 +186,7 @@ bool MediaServerApp::start()
180186 _config.turnExternalIP ,
181187 _config.host ,
182188 _config.tls .enabled (),
189+ _config.recordDir ,
183190 kProductName ,
184191 kServiceName ,
185192 ICEY_SERVER_VERSION,
@@ -498,8 +505,31 @@ json::Value MediaServerApp::statusJson() const
498505 j[" stream" ][" sourceKind" ] = sourceKind (_config.source );
499506 j[" stream" ][" loop" ] = _config.loop ;
500507 j[" record" ][" dir" ] = _config.recordDir ;
501- j[" intelligence" ][" vision" ] = _config.vision .enabled ;
502- j[" intelligence" ][" speech" ] = _config.speech .enabled ;
508+ json::Value intelligence;
509+ intelligence[" vision" ][" enabled" ] = _config.vision .enabled ;
510+ intelligence[" speech" ][" enabled" ] = _config.speech .enabled ;
511+ intelligence[" vision" ][" active" ] = false ;
512+ intelligence[" speech" ][" active" ] = false ;
513+ intelligence[" vision" ][" snapshotsEnabled" ] = _config.vision .snapshots .enabled ;
514+ intelligence[" vision" ][" clipsEnabled" ] = _config.vision .clips .enabled ;
515+ intelligence[" vision" ][" snapshotDir" ] = _config.vision .snapshots .dir ;
516+ intelligence[" vision" ][" clipDir" ] = _config.vision .clips .dir ;
517+ {
518+ std::lock_guard lock (_sessionMutex);
519+ for (const auto & [_, session] : _sessions) {
520+ if (session && session->active ()) {
521+ intelligence = session->intelligenceStatus ();
522+ intelligence[" vision" ][" enabled" ] = _config.vision .enabled ;
523+ intelligence[" speech" ][" enabled" ] = _config.speech .enabled ;
524+ intelligence[" vision" ][" snapshotsEnabled" ] = _config.vision .snapshots .enabled ;
525+ intelligence[" vision" ][" clipsEnabled" ] = _config.vision .clips .enabled ;
526+ intelligence[" vision" ][" snapshotDir" ] = _config.vision .snapshots .dir ;
527+ intelligence[" vision" ][" clipDir" ] = _config.vision .clips .dir ;
528+ break ;
529+ }
530+ }
531+ }
532+ j[" intelligence" ] = std::move (intelligence);
503533 if (_startedAt != std::chrono::steady_clock::time_point{}) {
504534 const auto uptime = std::chrono::duration_cast<std::chrono::seconds>(
505535 std::chrono::steady_clock::now () - _startedAt).count ();
0 commit comments