import subprocess, sys, statistics
W,H=320,176
def load(f):
    raw=subprocess.run(["ffmpeg","-v","error","-i",f,"-vf","scale=%d:%d"%(W,H),"-pix_fmt","gray","-f","rawvideo","-"],
                       capture_output=True).stdout
    fs=W*H
    return [raw[i*fs:(i+1)*fs] for i in range(len(raw)//fs) if len(raw[i*fs:(i+1)*fs])==fs]
def mad(a,b): return sum(abs(p-q) for p,q in zip(a,b))/len(a)
for f in sys.argv[1:]:
    fr=load(f); d=[mad(fr[i-1],fr[i]) for i in range(1,len(fr))]
    mx=max(d) or 1
    spark="".join(" .:-=+*#%@"[min(9,int(v/mx*9.99))] for v in d)
    n=len(d)//6
    bins=[statistics.mean(d[i*n:(i+1)*n]) for i in range(6)]
    print("%-40s" % f.split('/')[-1][:40])
    print("   时间轴: %s" % spark)
    print("   六段均值: " + "  ".join("%.2f"%b for b in bins) + "   | 后半/前半=%.2f" % (statistics.mean(bins[3:])/max(statistics.mean(bins[:3]),1e-9)))
