moved qa to logging instead of print

This commit is contained in:
Artur Mukhamadiev 2025-10-13 23:56:07 +03:00
parent ec7d82d344
commit f8385dbc42
2 changed files with 24 additions and 16 deletions

View File

@ -165,7 +165,7 @@ def plot_start_latency(df):
plt.errorbar(r1, plt.errorbar(r1,
mean_values, mean_values,
yerr=y_error, yerr=y_error,
fmt='.-', fmt='-',
color='darkblue', color='darkblue',
ecolor='red', ecolor='red',
capsize=3, capsize=3,

24
qa.py
View File

@ -1,6 +1,8 @@
#!/usr/bin/python3 #!/usr/bin/python3
import subprocess import subprocess
import pandas as pd import pandas as pd
import logging
def run_psnr_check(original, encoded, video_info): def run_psnr_check(original, encoded, video_info):
out = "" out = ""
@ -8,24 +10,28 @@ def run_psnr_check(original, encoded, video_info):
# -f rawvideo {video_info} # -f rawvideo {video_info}
options = f"-f rawvideo {video_info} -i {original} -i {encoded} -filter_complex psnr -f null /dev/null" options = f"-f rawvideo {video_info} -i {original} -i {encoded} -filter_complex psnr -f null /dev/null"
with open("ffmpeg-log.txt", "w") as f: with open("ffmpeg-log.txt", "w") as f:
proc = subprocess.run(["ffmpeg", *options.split()], stdout=f, stderr=subprocess.STDOUT, text=True) proc = subprocess.run(["ffmpeg", *options.split()],
print(f"Return code: {proc.returncode}") stdout=f, stderr=subprocess.STDOUT, text=True)
logging.info(f"Return code: {proc.returncode}")
with open("ffmpeg-log.txt", "r") as f: with open("ffmpeg-log.txt", "r") as f:
out = f.read() out = f.read()
return out return out
def run_ssim_check(original, encoded, video_info): def run_ssim_check(original, encoded, video_info):
# bad practice, but idgaf # bad practice, but idgaf
# -f rawvideo {video_info} # -f rawvideo {video_info}
# we don't need additional information with h264 encoded files # we don't need additional information with h264 encoded files
options = f"-f rawvideo {video_info} -i {original} -i {encoded} -filter_complex ssim -f null /dev/null" options = f"-f rawvideo {video_info} -i {original} -i {encoded} -filter_complex ssim -f null /dev/null"
with open("ffmpeg-log.txt", "w") as f: with open("ffmpeg-log.txt", "w") as f:
proc = subprocess.run(["ffmpeg", *options.split()], stdout=f, stderr=subprocess.STDOUT, text=True) proc = subprocess.run(["ffmpeg", *options.split()],
print(f"Return code: {proc.returncode}") stdout=f, stderr=subprocess.STDOUT, text=True)
logging.info(f"Return code: {proc.returncode}")
with open("ffmpeg-log.txt", "r") as f: with open("ffmpeg-log.txt", "r") as f:
out = f.read() out = f.read()
return out return out
def parse_psnr_output(output): def parse_psnr_output(output):
for line in output.splitlines(): for line in output.splitlines():
if "[Parsed_psnr" in line and "PSNR" in line: if "[Parsed_psnr" in line and "PSNR" in line:
@ -46,6 +52,7 @@ def parse_psnr_output(output):
} }
return {} return {}
def parse_ssim_output(output): def parse_ssim_output(output):
for line in output.splitlines(): for line in output.splitlines():
if "[Parsed_ssim" in line and "SSIM" in line: if "[Parsed_ssim" in line and "SSIM" in line:
@ -62,15 +69,17 @@ def parse_ssim_output(output):
} }
return {} return {}
def run_quality_check(original, encoded, option): def run_quality_check(original, encoded, option):
psnr_result = run_psnr_check(original, encoded, option) psnr_result = run_psnr_check(original, encoded, option)
ssim_result = run_ssim_check(original, encoded, option) ssim_result = run_ssim_check(original, encoded, option)
psnr_metrics = parse_psnr_output(psnr_result) psnr_metrics = parse_psnr_output(psnr_result)
ssim_metrics = parse_ssim_output(ssim_result) ssim_metrics = parse_ssim_output(ssim_result)
print ("PSNR Metrics:", psnr_metrics) logging.info("PSNR Metrics:", psnr_metrics)
print ("SSIM Metrics:", ssim_metrics) logging.info("SSIM Metrics:", ssim_metrics)
return psnr_metrics, ssim_metrics return psnr_metrics, ssim_metrics
def parse_quality_report(psnr_metrics, ssim_metrics): def parse_quality_report(psnr_metrics, ssim_metrics):
psnrSeries = pd.Series(psnr_metrics) psnrSeries = pd.Series(psnr_metrics)
ssimSeries = pd.Series(ssim_metrics) ssimSeries = pd.Series(ssim_metrics)
@ -114,7 +123,6 @@ if __name__ == "__main__":
) )
combined2.columns = columns combined2.columns = columns
main_df = pd.concat([main_df, combined2], axis=1) main_df = pd.concat([main_df, combined2], axis=1)
print(main_df) logging.info(main_df)
main_df.to_csv("quality_report.csv") main_df.to_csv("quality_report.csv")