o
    ٷi.                     @   sr   d dl Z d dlZd dlZd dlZd dlZd dlmZ ejdp)e	ee
 d Zdd Z				d
dd	ZdS )    N)PathGRADIO_TEMP_DIRgradioc              	      s  ddl m} | }| g}zS|drU|drUt|d }t|d }||k rUtjdtdd }tjdtdd }	tjd	tdd }
|||	|
g |dkr|||d i|	d
| did}tj	|j
 tjjtjjdI d H }| I d H \}}||d i|
d| did}tj	|j
 tjjtjjdI d H }| I d H \}}tjdtdd }|| t|d:}|dkrtj|	rtj|	dkr|d|	 d tj|
rtj|
dkr|d|
 d W d    n1 sw   Y  tj|r3tj|dkr3||di|did}tj	|j
 tjjtjjdI d H }| I d H \}}|}|	|
|fD ]}ztj|rGt| W q8 tyT   Y q8w d|v r|d r|d }t|D ]k\}}|dr|d dr|d dr|d d }|d d }|d}|dd}tjd| dtdd }|| t|||||I d H \}}|| |r||kr|| fvr|| |}qg||d i|did}tj	|j
 tjjtjjdI d H }| I d H \}}|jdkrt|| |}tjdtdd }|| ||d i|d id}tj	|j
 tjjtjjdI d H }| I d H \}}|jdkr\tj|r\tj|dkr\t|| || ||fW S  tyr   t  | |f Y S w )!Nr   FFmpegremove_segment_startremove_segment_endz_trimmed.mp4suffixdir   z_before.mp4z
_after.mp4z-t z4 -c:v libx264 -preset fast -crf 22 -c:a aac -r 30 -yinputsoutputsstdoutstderrz-ss z_concat.txtwzfile 'z'
z-f concat -safe 0z
-c copy -yzoom_effectsboundingBoxtopLeftbottomRightstart_frameduration       @_zoom_z.mp4z>-c:v libx264 -preset fast -crf 22 -c:a aac -r 30 -vsync cfr -yz_final_trimmed.mp4z;-ss 0.5 -c:v libx264 -preset fast -crf 22 -c:a aac -r 30 -y) ffmpyr   getfloattempfilemkstempDEFAULT_TEMP_DIRextendasynciocreate_subprocess_execcmdsplit
subprocessPIPEcommunicateappendopenospathexistsgetsizewriteunlinkOSError	enumeratezoom_in
returncodeshutilcopy	Exception	traceback	print_exc)
input_pathoutput_pathparamsr   current_input
temp_filesstartendsegment_outputbefore_segmentafter_segmentffprocessr   r   concat_fileffiler   ieffecttop_leftbottom_rightr   r   zoom_outputzoom_temp_filesfinal_trimmed_output rQ   Q/home/ubuntu/.local/lib/python3.10/site-packages/gradio/screen_recording_utils.pyprocess_video_with_ffmpeg   s8  



 









rS   r   c           &   
      s.  ddl m} g }z| rtj| s| |fW S |d u rd}nzt|}W n ttfy2   d}Y nw |d u r;ddg}|d u rCddg}zt|d t|d }}t|d t|d }	}
W n tttfys   d\}}d\}	}
Y nw t	d	t
d
|}t	d	t
d
|}t	dt
d|	}	t	dt
d|
}
|	|krd\}}	|
|krd\}}
|	| }|
| }||	 d }||
 d }dd }|||}|||}d}t
d| d| }d
}|| }t
||}t	|d}d|  d}tj|tjjtjjdI d H }| I d H \}}z|  }t|}W n ttfy   d}Y nw d}t
t||}tjdtdd }|| t|d }t|d }t|| } d\}!}"dg d| d|| |  |  d| d| d| d | d!| d| d||   d"| d| d#| d$| d%| d%|  d&| d'| d(| d)| d*| d+| d,|! d-|" d.}#|| d i|d/|# d0id1}$|$j }%tj|%tjjtjjdI d H }| I d H \}}|jdkr | |fW S ||fW S  ty   t  | |f Y S w )2Nr   r   <         ?      ?r   )rU   rU   )rV   rV   g        g?g?g      ?)rU   rV      c                 S   sD   | dk rd|  }| ||d   S | dkr | d }| ||d   S | S )Ng      ?rQ   )centersizedistance_from_centerrQ   rQ   rR   calculate_proportional_offset   s   z.zoom_in.<locals>.calculate_proportional_offsetg      @g?zWffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ""r   g      $@g      >@z_zoomed.mp4r	   )i  i8   z[0:v]zoompan=z='if(between(on,,z),if(lt(on-z),1+((z-1)*(on-z)/z),z-((z	-1)*((on--z))/z))),1)':x='iw*z	-iw/zoom*z':y='ih*z	-ih/zoom*z
':d=1:fps=z:s=xz[outv]z-filter_complex "zk" -map "[outv]" -map 0:a? -c:v libx264 -pix_fmt yuv420p -movflags +faststart -preset fast -r 30 -c:a aac -yr   )r   r   r,   r-   r.   r   
ValueError	TypeError
IndexErrormaxminr#   create_subprocess_shellr'   r(   r)   decodestripr   r    r!   r*   intjoinr%   r&   r$   r5   r8   r9   r:   )&r;   rL   rM   zoom_durationzoom_start_framer   r?   x1y1x2y2	box_width
box_heightbox_center_xbox_center_yr[   zoom_center_xzoom_center_ytarget_zoommax_zoom_by_sizesafety_margindynamic_max_zoomduration_cmdrF   r   r   outputvideo_durationfpsrN   zoom_in_frameszoom_out_frameshold_frameswidthheightcomplex_filterrE   	cmd_partsrQ   rQ   rR   r4      s  

	




		




r4   )NNr   N)r#   r,   r6   r   r9   pathlibr   environr   str
gettempdirr!   rS   r4   rQ   rQ   rQ   rR   <module>   s      +