moved qa to logging instead of print
This commit is contained in:
parent
ec7d82d344
commit
d5dcd099d0
@ -165,7 +165,7 @@ def plot_start_latency(df):
|
||||
plt.errorbar(r1,
|
||||
mean_values,
|
||||
yerr=y_error,
|
||||
fmt='.-',
|
||||
fmt='-',
|
||||
color='darkblue',
|
||||
ecolor='red',
|
||||
capsize=3,
|
||||
|
||||
32
qa.py
32
qa.py
@ -1,31 +1,37 @@
|
||||
#!/usr/bin/python3
|
||||
import subprocess
|
||||
import pandas as pd
|
||||
import logging
|
||||
|
||||
|
||||
def run_psnr_check(original, encoded, video_info):
|
||||
out = ""
|
||||
# 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"
|
||||
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()],
|
||||
stdout=f, stderr=subprocess.STDOUT, text=True)
|
||||
print(f"Return code: {proc.returncode}")
|
||||
with open("ffmpeg-log.txt", "r") as f:
|
||||
out = f.read()
|
||||
return out
|
||||
|
||||
|
||||
def run_ssim_check(original, encoded, video_info):
|
||||
# bad practice, but idgaf
|
||||
# -f rawvideo {video_info}
|
||||
# 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"
|
||||
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()],
|
||||
stdout=f, stderr=subprocess.STDOUT, text=True)
|
||||
print(f"Return code: {proc.returncode}")
|
||||
with open("ffmpeg-log.txt", "r") as f:
|
||||
out = f.read()
|
||||
return out
|
||||
|
||||
|
||||
def parse_psnr_output(output):
|
||||
for line in output.splitlines():
|
||||
if "[Parsed_psnr" in line and "PSNR" in line:
|
||||
@ -46,6 +52,7 @@ def parse_psnr_output(output):
|
||||
}
|
||||
return {}
|
||||
|
||||
|
||||
def parse_ssim_output(output):
|
||||
for line in output.splitlines():
|
||||
if "[Parsed_ssim" in line and "SSIM" in line:
|
||||
@ -62,15 +69,17 @@ def parse_ssim_output(output):
|
||||
}
|
||||
return {}
|
||||
|
||||
|
||||
def run_quality_check(original, encoded, option):
|
||||
psnr_result = run_psnr_check(original, encoded, option)
|
||||
ssim_result = run_ssim_check(original, encoded, option)
|
||||
psnr_metrics = parse_psnr_output(psnr_result)
|
||||
ssim_metrics = parse_ssim_output(ssim_result)
|
||||
print ("PSNR Metrics:", psnr_metrics)
|
||||
print ("SSIM Metrics:", ssim_metrics)
|
||||
logging.info("PSNR Metrics:", psnr_metrics)
|
||||
logging.info("SSIM Metrics:", ssim_metrics)
|
||||
return psnr_metrics, ssim_metrics
|
||||
|
||||
|
||||
def parse_quality_report(psnr_metrics, ssim_metrics):
|
||||
psnrSeries = pd.Series(psnr_metrics)
|
||||
ssimSeries = pd.Series(ssim_metrics)
|
||||
@ -82,10 +91,10 @@ def parse_quality_report(psnr_metrics, ssim_metrics):
|
||||
|
||||
if __name__ == "__main__":
|
||||
psnr, ssim = run_quality_check(
|
||||
"base-x264enc-kpop-test-10.yuv",
|
||||
"encoded-x264enc-kpop-test-10.mp4",
|
||||
"-pixel_format yuv420p -color_range tv -video_size 1920x1080 -framerate 23.98 "
|
||||
)
|
||||
"base-x264enc-kpop-test-10.yuv",
|
||||
"encoded-x264enc-kpop-test-10.mp4",
|
||||
"-pixel_format yuv420p -color_range tv -video_size 1920x1080 -framerate 23.98 "
|
||||
)
|
||||
|
||||
combined = parse_quality_report(
|
||||
psnr,
|
||||
@ -97,8 +106,8 @@ if __name__ == "__main__":
|
||||
params = "bitrate=5000"
|
||||
|
||||
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
|
||||
|
||||
@ -117,4 +126,3 @@ if __name__ == "__main__":
|
||||
print(main_df)
|
||||
|
||||
main_df.to_csv("quality_report.csv")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user