moved qa to logging instead of print
This commit is contained in:
parent
ec7d82d344
commit
f8385dbc42
@ -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,
|
||||||
|
|||||||
38
qa.py
38
qa.py
@ -1,31 +1,37 @@
|
|||||||
#!/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 = ""
|
||||||
# bad practice, but idgaf
|
# bad practice, but idgaf
|
||||||
# -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)
|
||||||
@ -82,10 +91,10 @@ def parse_quality_report(psnr_metrics, ssim_metrics):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
psnr, ssim = run_quality_check(
|
psnr, ssim = run_quality_check(
|
||||||
"base-x264enc-kpop-test-10.yuv",
|
"base-x264enc-kpop-test-10.yuv",
|
||||||
"encoded-x264enc-kpop-test-10.mp4",
|
"encoded-x264enc-kpop-test-10.mp4",
|
||||||
"-pixel_format yuv420p -color_range tv -video_size 1920x1080 -framerate 23.98 "
|
"-pixel_format yuv420p -color_range tv -video_size 1920x1080 -framerate 23.98 "
|
||||||
)
|
)
|
||||||
|
|
||||||
combined = parse_quality_report(
|
combined = parse_quality_report(
|
||||||
psnr,
|
psnr,
|
||||||
@ -97,8 +106,8 @@ if __name__ == "__main__":
|
|||||||
params = "bitrate=5000"
|
params = "bitrate=5000"
|
||||||
|
|
||||||
columns = pd.MultiIndex.from_tuples(
|
columns = pd.MultiIndex.from_tuples(
|
||||||
[(encoder, profile, params, col) for col in combined.columns]
|
[(encoder, profile, params, col) for col in combined.columns]
|
||||||
)
|
)
|
||||||
|
|
||||||
combined.columns = columns
|
combined.columns = columns
|
||||||
|
|
||||||
@ -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")
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user