refactor(streamer): consume control and body over NATS

This commit is contained in:
2026-03-16 17:07:45 +08:00
parent ee8ff747ea
commit ee53d1958e
5 changed files with 144 additions and 116 deletions
+12
View File
@@ -260,6 +260,9 @@ std::expected<void, std::string> apply_toml_file(RuntimeConfig &config, const st
if (auto value = toml_value<std::string>(table, "input.uri")) {
config.input.uri = *value;
}
if (auto value = toml_value<std::string>(table, "input.nats_url")) {
config.input.nats_url = *value;
}
if (auto value = toml_value<std::string>(table, "run_mode")) {
auto parsed = parse_run_mode(*value);
if (!parsed) {
@@ -551,6 +554,7 @@ std::expected<RuntimeConfig, std::string> parse_runtime_config(int argc, char **
std::string config_path_raw{};
std::string input_uri_raw{};
std::string input_nats_url_raw{};
std::string run_mode_raw{};
std::string codec_raw{};
std::string encoder_backend_raw{};
@@ -588,6 +592,7 @@ std::expected<RuntimeConfig, std::string> parse_runtime_config(int argc, char **
app.add_option("--config", config_path_raw);
app.add_option("--input-uri", input_uri_raw);
app.add_option("--nats-url", input_nats_url_raw);
app.add_option("--run-mode", run_mode_raw);
app.add_option("--codec", codec_raw);
app.add_option("--encoder-backend", encoder_backend_raw);
@@ -640,6 +645,9 @@ std::expected<RuntimeConfig, std::string> parse_runtime_config(int argc, char **
if (!input_uri_raw.empty()) {
config.input.uri = input_uri_raw;
}
if (!input_nats_url_raw.empty()) {
config.input.nats_url = input_nats_url_raw;
}
if (!run_mode_raw.empty()) {
auto parsed = parse_run_mode(run_mode_raw);
if (!parsed) {
@@ -814,6 +822,9 @@ std::expected<void, std::string> validate_runtime_config(const RuntimeConfig &co
if (config.input.uri.empty()) {
return std::unexpected("invalid input config: input.uri must not be empty");
}
if (config.input.nats_url.empty()) {
return std::unexpected("invalid input config: input.nats_url must not be empty");
}
if (config.outputs.rtmp.enabled && config.outputs.rtmp.urls.empty()) {
return std::unexpected("invalid RTMP config: enabled RTMP output requires at least one URL");
@@ -882,6 +893,7 @@ std::expected<void, std::string> validate_runtime_config(const RuntimeConfig &co
std::string summarize_runtime_config(const RuntimeConfig &config) {
std::ostringstream ss;
ss << "input.uri=" << config.input.uri;
ss << ", input.nats_url=" << config.input.nats_url;
ss << ", run_mode=" << to_string(config.run_mode);
ss << ", encoder.backend=" << to_string(config.encoder.backend);
ss << ", encoder.device=" << to_string(config.encoder.device);