#!pwsh -f # +-----------------------+ # ! ! # ! V1F ! # ! ! # +-------+-------+-------+ # ! V2F ! V3F ! V4F ! # +-------+-------+-------+ $FOLDER="$HOME/Downloads" $V1F="$FOLDER/sc4_ext.MOV" $V1_pre='' $V1_time='5.5' $V2F="$FOLDER/sc4_int.avi" $V2_pre='' $V2_time='3.25' $V3F="$FOLDER/sc4_sui.mp4" $V3_pre='' $V3_time='0.0' $V4F="$FOLDER/sc4_GOPRO.MP4" $V4_pre='crop=iw*3/4:ih:0:0,rotate=PI,' $V4_time='7.7' # Durée de la vidéo en sortie # Format = [HH:]MM:SS[.m...] ou S+[.m...] $VOUT_duration='19.5' # 0 => Affiche avec ffplay ce que ça *devrait* rendre (pas tout à fait équivalent) # 1 => Encode la vidéo avec ffmpeg $encode=0 # Largeur de la vidéo résultante $W_out=1024 # Hauteur de la ligne des 3 vidéos $H_outL=240 # 1 => génère des vidéos, à partir des originales, avec un TimeStamp incrusté # -> Utile pour la mise au point des valeurs de debut (-ss) $create_tsvid=1 # Pour utiliser les vidéos incrustées à la place des vidéos originales $use_tsvid=1 if ( $create_tsvid -eq 1 ) { # Commande pour incruster le texte $DRAW_TEXT="drawtext=text='%{pts\:hms\:0}':fontcolor=red:fontsize=50:shadowx=3:shadowy=2:x=(w-tw)/2:y=h/3" # Commande pour générer une "keyframe" toutes les secondes # -> indispensable pour avoir un minimum de précision sur l'option "-ss" avec ffplay. $FORCE_KF='-force_key_frames', 'expr:gte(t,n_forced*1)' ffmpeg -hide_banner -i $V1F -vf ${V1_pre}${DRAW_TEXT} $FORCE_KF $V1F'.mkv' ffmpeg -hide_banner -i $V2F -vf ${V2_pre}${DRAW_TEXT} $FORCE_KF $V2F'.mkv' ffmpeg -hide_banner -i $V3F -vf ${V3_pre}${DRAW_TEXT} $FORCE_KF $V3F'.mkv' ffmpeg -hide_banner -i $V4F -vf ${V4_pre}${DRAW_TEXT} $FORCE_KF $V4F'.mkv' } if ( $use_tsvid ) { $V1F=$V1F + '.mkv' $V2F=$V2F + '.mkv' $V3F=$V3F + '.mkv' $V4F=$V4F + '.mkv' $V1_pre='' $V2_pre='' $V3_pre='' $V4_pre='' } if ( $encode ) { $CMD='ffmpeg' # Les noms des fichiers peuvent contenir des espaces, donc on utilise un tableau pour séparer les entrées $INPUTS='-ss',$V1_time,'-i',$V1F,'-ss',$V2_time,'-i',$V2F,'-ss',$V3_time,'-i',$V3F,'-ss',$V4_time,'-i',$V4F $FILTER_OPT='-filter_complex' $OUTPUT='-to', $VOUT_duration, ((Get-Date -format 'yyyy-MM-dd_HH-mm-ss')+'.mkv') } else { $CMD='ffplay' $INPUTS='-ss', $V1_time, $V1F, '-noframedrop' $FILTER_OPT='-vf' $V2_time=$V1_time - $V2_time $V3_time=$V1_time - $V3_time $V4_time=$V1_time - $V4_time $V2_pre="movie=$V2F, setpts=PTS+$V2_time/TB, $V2_pre" $V3_pre="movie=$V3F, setpts=PTS+$V3_time/TB, $V3_pre" $V4_pre="movie=$V4F, setpts=PTS+$V4_time/TB, $V4_pre" } & $CMD -hide_banner $INPUTS $FILTER_OPT " ${V1_pre}scale=${W_out}:-1 [V1]; ${V2_pre}scale=-1:${H_outL} [V2]; ${V3_pre}scale=-1:${H_outL} [V3]; ${V4_pre}scale=-1:${H_outL} [V4]; [V2][V3][V4] hstack=3 [VL]; [V1][VL] vstack=shortest=1 " $OUTPUT