From 4a876553168cedef2c978fca8872ff9febd87592 Mon Sep 17 00:00:00 2001 From: jb-alvarado Date: Wed, 25 May 2022 22:13:52 +0200 Subject: [PATCH] reorder and cleanup --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/input/ingest.rs | 51 ++++++++++++++++++++++++++------------------- src/output/hls.rs | 31 +++++++++++---------------- 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 24f249c0..bb1f0ad5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -195,7 +195,7 @@ dependencies = [ [[package]] name = "ffplayout-engine" -version = "0.9.6" +version = "0.9.7" dependencies = [ "chrono", "clap", diff --git a/Cargo.toml b/Cargo.toml index a81a4e7f..7becd4d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ description = "24/7 playout based on rust and ffmpeg" license = "GPL-3.0" authors = ["Jonathan Baecker jonbae77@gmail.com"] readme = "README.md" -version = "0.9.6" +version = "0.9.7" edition = "2021" default-run = "ffplayout" diff --git a/src/input/ingest.rs b/src/input/ingest.rs index 5e782c42..e65b72c2 100644 --- a/src/input/ingest.rs +++ b/src/input/ingest.rs @@ -12,6 +12,30 @@ use crate::filter::ingest_filter::filter_cmd; use crate::utils::{format_log_line, GlobalConfig, Ingest, ProcessControl}; use crate::vec_strings; +pub fn log_line(line: String, level: &str) { + if line.contains("[info]") && level.to_lowercase() == "info" { + info!( + "[Server] {}", + format_log_line(line, "info") + ) + } else if line.contains("[warning]") + && (level.to_lowercase() == "warning" || level.to_lowercase() == "info") + { + warn!( + "[Server] {}", + format_log_line(line, "warning") + ) + } else if line.contains("[error]") + && !line.contains("Input/output error") + && !line.contains("Broken pipe") + { + error!( + "[Server] {}", + format_log_line(line, "error") + ); + } +} + fn server_monitor( level: &str, buffer: BufReader, @@ -20,33 +44,18 @@ fn server_monitor( for line in buffer.lines() { let line = line?; - if line.contains("[info]") && level.to_lowercase() == "info" { - info!( - "[Server] {}", - format_log_line(line.clone(), "info") - ) - } else if line.contains("[warning]") - && (level.to_lowercase() == "warning" || level.to_lowercase() == "info") - { + if line.contains("rtmp") && line.contains("Unexpected stream") { + if let Err(e) = proc_ctl.kill(Ingest) { + error!("{e}"); + }; + warn!( - "[Server] {}", - format_log_line(line.clone(), "warning") - ) - } else if line.contains("[error]") - && !line.contains("Input/output error") - && !line.contains("Broken pipe") - { - error!( "[Server] {}", format_log_line(line.clone(), "error") ); } - if line.contains("rtmp") && line.contains("Unexpected stream") { - if let Err(e) = proc_ctl.kill(Ingest) { - error!("{e}"); - }; - } + log_line(line, level); } Ok(()) diff --git a/src/output/hls.rs b/src/output/hls.rs index 7e61ca93..b8841476 100644 --- a/src/output/hls.rs +++ b/src/output/hls.rs @@ -28,10 +28,10 @@ use std::{ use simplelog::*; use crate::filter::ingest_filter::filter_cmd; -use crate::input::source_generator; +use crate::input::{ingest::log_line, source_generator}; use crate::utils::{ - format_log_line, sec_to_time, stderr_reader, Decoder, GlobalConfig, Ingest, PlayerControl, - PlayoutStatus, ProcessControl, + sec_to_time, stderr_reader, Decoder, GlobalConfig, Ingest, PlayerControl, PlayoutStatus, + ProcessControl, }; use crate::vec_strings; @@ -42,6 +42,7 @@ fn ingest_to_hls_server( mut proc_control: ProcessControl, ) -> Result<(), Error> { let playlist_init = playout_stat.list_init; + let level = config.logging.ffmpeg_level.clone(); let mut server_cmd = vec_strings!["-hide_banner", "-nostats", "-v", "level+info"]; let stream_input = config.ingest.input_cmd.clone().unwrap(); @@ -70,7 +71,7 @@ fn ingest_to_hls_server( { Err(e) => { error!("couldn't spawn ingest server: {e}"); - panic!("couldn't spawn ingest server: {e}") + panic!("couldn't spawn ingest server: {e}"); } Ok(proc) => proc, }; @@ -82,6 +83,12 @@ fn ingest_to_hls_server( for line in server_err.lines() { let line = line?; + if line.contains("rtmp") && line.contains("Unexpected stream") { + if let Err(e) = proc_ctl.kill(Ingest) { + error!("{e}"); + }; + } + if !is_running { proc_control.server_is_running.store(true, Ordering::SeqCst); playlist_init.store(true, Ordering::SeqCst); @@ -94,21 +101,7 @@ fn ingest_to_hls_server( } } - if line.contains("[error]") - && !line.contains("Input/output error") - && !line.contains("Broken pipe") - { - error!( - "[server] {}", - format_log_line(line.clone(), "error") - ); - } - - if line.contains("rtmp") && line.contains("Unexpected stream") { - if let Err(e) = proc_ctl.kill(Ingest) { - error!("{e}"); - }; - } + log_line(line, &level); } info!("Switch from live ingest to {}", config.processing.mode);