Private
Public Access
Release 0.11.0 with guided calibration, source transitions and root repair
This commit is contained in:
1 parent
e55d37772a
commit
f74a658097
33 files changed
+855
-75
No files matched your search
@@ -0,0 +1,30 @@
|
||||
"""Build the deterministic native video-plane calibration stimulus (H.264)."""
|
||||
import argparse, subprocess
|
||||
from pathlib import Path
|
||||
|
||||
parser=argparse.ArgumentParser()
|
||||
parser.add_argument('--ffmpeg',default='ffmpeg')
|
||||
args=parser.parse_args()
|
||||
root=Path(__file__).resolve().parent
|
||||
width,height=1920,1080
|
||||
filters=[]
|
||||
for step in range(32):
|
||||
edge,index=divmod(step,8)
|
||||
center=(index+.5)/8
|
||||
if edge==0: x,y,w,h=int(center*width-192),0,384,162
|
||||
elif edge==1: x,y,w,h=1632,int(center*height-108),288,216
|
||||
elif edge==2: x,y,w,h=int((1-center)*width-192),918,384,162
|
||||
else: x,y,w,h=0,int((1-center)*height-108),288,216
|
||||
left,top=max(0,x),max(0,y)
|
||||
w,h=min(width,x+w)-left,min(height,y+h)-top
|
||||
start=4+step*2
|
||||
filters.append(f"drawbox=x={left}:y={top}:w={w}:h={h}:color=white:t=fill:enable='gte(t,{start})*lt(t,{start+2})'")
|
||||
# Four color quadrants for visual validation after measurement.
|
||||
for x,y,color in [(0,0,'red'),(960,0,'lime'),(960,540,'blue'),(0,540,'yellow')]:
|
||||
filters.append(f"drawbox=x={x}:y={y}:w=960:h=540:color={color}:t=fill:enable='gte(t,68)'")
|
||||
subprocess.run([args.ffmpeg,'-hide_banner','-loglevel','error','-y','-f','lavfi','-i',
|
||||
'color=black:s=1920x1080:r=30:d=78','-vf',','.join(filters),
|
||||
'-c:v','libx264','-preset','fast','-crf','16','-pix_fmt','yuv420p',
|
||||
'-profile:v','main','-level','4.0','-g','30','-an','-movflags','+faststart',
|
||||
str(root/'app/calibration.mp4')],check=True)
|
||||
print(root/'app/calibration.mp4')
|
||||
Reference in new issue
Block a user