diff --git a/ffplayout/output/desktop.py b/ffplayout/output/desktop.py index 756c8202..141a34a9 100644 --- a/ffplayout/output/desktop.py +++ b/ffplayout/output/desktop.py @@ -60,7 +60,8 @@ def output(): try: enc_cmd = [ - 'ffplay', '-hide_banner', '-nostats', '-i', 'pipe:0' + 'ffplay', '-hide_banner', '-nostats', + '-v', f'level+{log.ff_level.lower()}', '-i', 'pipe:0' ] + overlay messenger.debug(f'Encoder CMD: "{" ".join(enc_cmd)}"') @@ -91,7 +92,7 @@ def output(): f'seconds: {node.get("source")}') dec_cmd = [ - 'ffmpeg', '-v', log.ff_level.lower(), + 'ffmpeg', '-v', f'level+{log.ff_level.lower()}', '-hide_banner', '-nostats' ] + node['src_cmd'] + node['filter'] + ff_pre_settings diff --git a/ffplayout/output/hls.py b/ffplayout/output/hls.py index 758e3e47..c71cdf3b 100644 --- a/ffplayout/output/hls.py +++ b/ffplayout/output/hls.py @@ -88,12 +88,12 @@ def output(): messenger.info(f'Play: {node.get("source")}') cmd = [ - 'ffmpeg', '-v', log.ff_level.lower(), '-hide_banner', - '-nostats' + 'ffmpeg', '-v', f'level+{log.ff_level.lower()}', + '-hide_banner', '-nostats' ] + node['src_cmd'] + node['filter'] + [ - '-metadata', 'service_name=' + playout.name, - '-metadata', 'service_provider=' + playout.provider, - '-metadata', 'year={}'.format(year) + '-metadata', f'service_name={playout.name}', + '-metadata', f'service_provider={playout.provider}', + '-metadata', f'year={year}' ] + playout.ffmpeg_param + playout.hls_output messenger.debug(f'Encoder CMD: "{" ".join(cmd)}"') diff --git a/ffplayout/output/stream.py b/ffplayout/output/stream.py index 455ef130..5a94fb87 100644 --- a/ffplayout/output/stream.py +++ b/ffplayout/output/stream.py @@ -62,11 +62,11 @@ def output(): try: enc_cmd = [ - 'ffmpeg', '-v', log.ff_level.lower(), '-hide_banner', + 'ffmpeg', '-v', f'level+{log.ff_level.lower()}', '-hide_banner', '-nostats', '-re', '-thread_queue_size', '160', '-i', 'pipe:0' ] + overlay + [ - '-metadata', 'service_name=' + playout.name, - '-metadata', 'service_provider=' + playout.provider, + '-metadata', f'service_name={playout.name}', + '-metadata', f'service_provider={playout.provider}', '-metadata', f'year={year}' ] + playout.ffmpeg_param + playout.stream_output @@ -96,7 +96,7 @@ def output(): messenger.info(f'Play: {node.get("source")}') dec_cmd = [ - 'ffmpeg', '-v', log.ff_level.lower(), + 'ffmpeg', '-v', f'level+{log.ff_level.lower()}', '-hide_banner', '-nostats' ] + node['src_cmd'] + node['filter'] + ff_pre_settings diff --git a/ffplayout/utils.py b/ffplayout/utils.py index 54964289..8de2ae12 100644 --- a/ffplayout/utils.py +++ b/ffplayout/utils.py @@ -703,15 +703,26 @@ def ffmpeg_stderr_reader(std_errors, decoder): logger = encoder_logger prefix = ENC_PREFIX + def form_line(line, level): + return f'{prefix}{line.replace(level, "").rstrip()}' + + def write_log(line): + if '[info]' in line: + logger.info(form_line(line, '[info] ')) + elif '[warning]' in line: + logger.warning(form_line(line, '[warning] ')) + elif '[error]' in line: + logger.error(form_line(line, '[error] ')) + try: for line in std_errors: if log.ff_level == 'INFO': - logger.info(f'{prefix}{line.decode("utf-8").rstrip()}') + write_log(line.decode()) elif log.ff_level == 'WARNING': - logger.warning(f'{prefix}{line.decode("utf-8").rstrip()}') + write_log(line.decode()) else: - logger.error(f'{prefix}{line.decode("utf-8").rstrip()}') - except ValueError: + write_log(line.decode()) + except (ValueError, AttributeError): pass