#!/bin/csh ####################################################################################################################################### # # # C O N V E R S I O N ' $MPEG ' D ' U N E L I S T E D ' I M A G E S : # # # # # # Utilisation : # # # # $xci/Gen_MPEG$vv$Z <Racine_images> <premiere> <derniere> <palette> <FluxResultat> [<Rep> [<Quality> [<Signature> [<Pas>]]]] # # $xci/Gen_MPEG$vv$Z <Racine_images> <premiere> <derniere> RVB <FluxResultat> [[<Rep> <Quality> [<Signature> [<Pas>]]]] # # # # # # Nota : # # # # On notera que la sequence peut etre # # aussi bien generee en marche avant # # (premiere < derniere) qu'en marche # # arriere (premiere > derniere)... # # # # # # Author of '$xci/Gen_MPEG$vv$Z' : # # # # Jean-Francois COLONNA (LACTAMME, 20030601155958). # # # ####################################################################################################################################### commandeX $FFMPEG # Introduit le 20180718163153 (a cause de certaines MACHINEs '$CMAP28' sur lesquelles cette # # commande n'est pas installee...). # set RacineP=($1) set premiereI=$2 set derniereI=$3 set Palette=$4 set FluxResultat=$5 set ListeRepetitions=($6) # La liste optionnelle des repetitions a ete introduite le 20180209082546... # set Quality=$7 # La possibilite de changer la qualite (afin de changer la taille du fichier '$FluxResultat') # # a ete introduite le 20030603092445. A titre d'exemple en passant de 100 a 20 pour le # # parametre '$Quality', la taille du fichier '$FluxResultat' est divisee par 9 (resultat # # obtenu avec les 16 premieres images de celles qui ont generees 'v $xiad/MORL.52$MPEG'). # set Signature=$8 # La possibilite de signer les animations a ete introduite le 20030602165057. # set Pas=$9 # Pas de parcours de la liste sequentielle des images. # set Racine=$RacineP[1] # Recuperation de la racine... # if ("$ListeRepetitions" == "$K_VIDE") then @ NoMbRe_ImAgEs = $derniereI - $premiereI @ NoMbRe_ImAgEs = $NoMbRe_ImAgEs + 1 set ListeRepetitions=`GenListe $NoMbRe_ImAgEs 1` # Par defaut, chaque image ne sera repetee qu'une seule fois... # else endif @ NRacine = $derniereI - $premiereI @ NRacine = $NRacine + 1 if ($NRacine != $#ListeRepetitions) then EROR "La liste des images et celles des repetitions n'ont pas le meme nombre d'elements." else endif setArgum Quality 100 # Par defaut, la qualite maximale est demandee... # setArgum Signature FAUX # Par defaut, les animations ne sont pas signees... # setArgum Pas 1 # Lorsque cet argument est absent, on lui donne la valeur '1' parce que c'est la valeur la # # plus logique (qui etait aussi la valeur implicite anterieure...). # switch ("$mHOTE") # Definition de la qualite (introduit le 20180604171740...). # # # # Discrimination des differentes MACHINEs possibles : # case "$CCVR11": case "$CCVR12": case "$CCVR13": case "$CCVR14": case "$CCVR21": case "$CMAP21": case "$CMAP22": case "$CMAP23": case "$CMAP24": case "$CMAP25": case "$CMAP26": case "$CMAP27": case "$CMAP28": case "$CMAP29": case "$EDFR12": case "$EDFR13": case "$EDFR14": case "$EDFR15": case "$EDFR21": case "$EDFR22": case "$EDFR22h": case "$IDRI11": case "$IDRI21": case "$INFO11": case "$INFO21": case "$INFO22": case "$INFO23": case "$INFO24": case "$INFO25": case "$INFO26": case "$LACT11": case "$LACT12": case "$LACT14": case "$LACT15": case "$LACT16": case "$LACT17": case "$LACT18": case "$LACT19": case "$LACT71": case "$LACT21": case "$LACT22": case "$LACT23": case "$EDFR11": case "$HOME11": case "$LACT27": case "$LACT28": case "$LACT29": case "$LHYX11": case "$LINX11": case "$LINX12": saut #20190316222700____: ATTENTION "Sur ces MACHINEs, la qualite du $K_QS$K_DOLLAR""MPEG$K_QS genere n$K_QS""est pas garantie." # ATTENTION "Sur cette MACHINE, la qualite du $K_QS$K_DOLLAR""MPEG$K_QS genere n$K_QS""est pas garantie : utiliser $K_QS""LACT1A$K_QS." saut ATTENTION "Mais le $K_QS$K_DOLLAR""MPEG$K_QS genere sur $K_QS""LACT1A$K_QS n$K_QS""est pas lisible sur $K_QS""LACT19$K_QS""." # Introduit le 20241112100025 apres la regeneration de 'v $xiac/VONK.63$R16' sur '$LACT19'... # saut breaksw case "$LACT1A": # Ici, au moins on sait que la qualite est excellente (note le 20180604171740...). # breaksw case "$LACT1B": # A priori, le 20210701142843 on ne sait encore rien... # breaksw default: # Cas des MACHINEs non reconnues : # EROR "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')." breaksw endsw set Postfixe="$K_VIDE" # A priori, on considere qu'il n'y a pas de postfixe... # if ($#RacineP > 1) then set NoError_DKVP=$EXIST source $Fdisk_video_P unset NoError_DKVP if ("$Palette" == "$RVB_DKVP") then EROR "En mode 'RVB' les noms des images ne peuvent etre postfixes." else set Postfixe=$RacineP[2] # Cas ou il y a un postfixe et que l'on est en mode "palette"... # endif else endif if ($?Licence_MPEG == $EXIST) then #20180205170252____: set P_PostScript_RVB=$PostScript # set P_PostScript_RVB=$RVB # Introduit le 20180205164811... # if ($P_PostScript_RVB == $RVB) then setenv PostScript_RVB $EXIST else endif $DELETE $FluxResultat$MP4 $DELETE $FluxResultat$MPEG # Nettoyage prelimianire a priori complete par '$MP4' le 20180207091026... # switch ("$SYSTEME") # Definition du convertisseur 'MPEG'... # # # # Discrimination des differents SYSTEMEs possibles : # case "SYSTEME_CRAY2_UNICOS_CC": case "SYSTEME_CRAY2_UNICOS_SCC": case "SYSTEME_CRAYC98_UNICOS_CC": case "SYSTEME_CRAYC98_UNICOS_SCC": case "SYSTEME_CRAYC916_UNICOS_CC": case "SYSTEME_CRAYC916_UNICOS_SCC": case "SYSTEME_CRAYYMP1_UNICOS_CC": case "SYSTEME_CRAYYMP1_UNICOS_SCC": case "SYSTEME_CRAYYMP2_UNICOS_CC": case "SYSTEME_CRAYYMP2_UNICOS_SCC": case "SYSTEME_CRAYYMP4_UNICOS_CC": case "SYSTEME_CRAYYMP4_UNICOS_SCC": case "SYSTEME_DECALPHA340_OSF1_CC": case "SYSTEME_DECALPHA340_OSF1_GCC": case "SYSTEME_DECALPHA350_OSF1_CC": case "SYSTEME_DECALPHA350_OSF1_GCC": case "SYSTEME_DPX2000_SPIX_CC": case "SYSTEME_DPX5000_SPIX_CC": case "SYSTEME_ES9000_AIX_CC": case "SYSTEME_FX2800_CONCENTRIX_FXC": case "SYSTEME_FX2800_CONCENTRIX_PCC": case "SYSTEME_FX2800_CONCENTRIX_SCC": case "SYSTEME_FX40_CONCENTRIX_CC": case "SYSTEME_FX40_CONCENTRIX_FXC": case "SYSTEME_HP705_HPUX_CC": case "SYSTEME_HP710_HPUX_CC": case "SYSTEME_HP720_HPUX_CC": case "SYSTEME_HP750_HPUX_CC": case "SYSTEME_HP755_HPUX_CC": case "SYSTEME_NWS3000_NEWSOS_CC": case "SYSTEME_NWS3000_NEWSOS_2CC": case "SYSTEME_RS6000_AIX_CC": case "SYSTEME_SPS9_ROS_CC": case "SYSTEME_SPS9_ROS_RC": case "SYSTEME_SUN3_SUNOS_CC": case "SYSTEME_SUN4_SUNOS_CC": case "SYSTEME_SUN4NCUBE2S_SUNOS_CC": case "SYSTEME_SUN4NCUBE2S_SUNOS_NCC": case "SYSTEME_VAX8600_ULTRIX_CC": case "SYSTEME_VAX8600_ULTRIX_VCC": case "SYSTEME_VAX9000_ULTRIX_CC": case "SYSTEME_VAX9000_ULTRIX_GCC": case "SYSTEME_VAX9000_ULTRIX_VCC": EROR "L'encodage 'MPEG' n'est pas disponible sur '$SYSTEME' (1)." breaksw case "SYSTEME_APC_LinuxDebian_GCC": case "SYSTEME_APC_LinuxMandrake_GCC": case "SYSTEME_APC_LinuxRedHat_GCC": case "SYSTEME_APC_LinuxUbuntu_GCC": case "SYSTEME_APC_LinuxUbuntu_ICC": case "SYSTEME_APC_LinuxUlmint_GCC": case "SYSTEME_APC_LinuxUlmint_ICC": #20180204083136____: FileTmpB FCoDaGe $Y # FileTmpB FCoDaGe set SeQuEnCe=`Genom6` # Afin de generer des noms tres courts et donc une liste '$LSeQuEnCe' ci-apres qui ne # # deborde pas... # #20111101103219____: alias CoDaGe 'set ImAgE=\!* ; \\ # #2011110110: $xci/PostScript$Z $Racine$ImAgE$Postfixe $Palette $xT/$SeQuEnCe.$ImAgE 1 $Signature "$K_VIDE" $dimX $dimY 0 0 ; \\ # #20111101103219____: unset ImAgE' # #20111103142329____: alias CoDaGe 'set ImAgE=\!* ; \\ # #: $xci/PostScript$Z $Racine$ImAgE$Postfixe $Palette $xT/$SeQuEnCe.$ImAgE 1 $Signature "$K_VIDE" $dimX $dimY 0 0 VRAI VRAI ; \\ # #20111103142329____: unset ImAgE' # #20180204083136____: alias CoDaGe 'set ImAgE=\!* ; \\ # #: $xci/PostScript$Z $Racine$ImAgE$Postfixe $Palette $xT/$SeQuEnCe.$ImAgE 1 $Signature "$K_VIDE" $dimX $dimY 0 0 VRAI VRAI ; \\ # #20180204083136____: unset ImAgE' # set CoDaGe1="$xci/PostScript$Z $Racine" set CoDaGe2="$Postfixe $Palette $xT/$SeQuEnCe." set CoDaGe3="1 $Signature $K_QD$K_VIDE$K_QD $dimX $dimY 0 0 VRAI VRAI" # Conversion '$PostScript' en un seul exemplaire, en conservant les echelles {$dimX,$dimY} # # et avec une translation nulle {0,0}. # #20180204083136____: $CA $xcs/csh$Y \ # #20180204083136____: > $FCoDaGe # set LSeQuEnCe=`$xci/nombres$X A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas lignes=VRAI CAL1=FAUX` # Generation de la liste des numeros d'images a encoder en '$MPEG'. # # # # Le 'CAL1=FAUX' a ete introduit le 20030602174333 afin d'eliminer les messages emis dans # # le cas ou le pas n'est pas egal a l'unite ('v $xil/defi_K2$vv$DEF DoQu')... # set VaLiDe1=`echo "$LSeQuEnCe" | $R "$K_BLANC" "$K_NL" | $xcp/ferme_K_NL$X | $WCl` set VaLiDe2=`$xci/nombres$X A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas lignes=VRAI CAL1=FAUX | $WCl` if ($VaLiDe1 != $VaLiDe2) then EROR "Il y a trop d'images a encoder : la liste '$K_DOLLAR""LSeQuEnCe' deborde." else endif unset VaLiDe1 unset VaLiDe2 #20180204083136____: echo "$LSeQuEnCe" | \ # #20180204083136____: $R "$K_BLANC" "$K_NL" | \ # #20180204083136____: $xcp/ferme_K_NL$X | \ # #20180204083136____: $GRE -v '^ *$' | \ # #20180204083136____: $SE -e "s/^/CoDaGe /" \ # #20180204083136____: >>! $FCoDaGe # echo "$LSeQuEnCe" | \ $R "$K_BLANC" "$K_NL" | \ $xcp/ferme_K_NL$X | \ $GRE -v '^ *$' | \ $SE -e 's+^\(.*\)$'"+$CoDaGe1\1 $CoDaGe2\1 $CoDaGe3+" \ >>! $FCoDaGe # Generation du programme de conversion '$PostScript' de la sequence argument... # #20180204083136____: source $FCoDaGe # setenv TaillePaquetsLinda 8 setenv FindExec_MessagesBP $NEXIST $xcg/ExecParallele.01$Z $FCoDaGe unsetenv FindExec_MessagesBP unsetenv TaillePaquetsLinda # Conversion '$PostScript' de la sequence argument... # # # # Le 20180206093754, 'v $xci/PostScript$Z ' etant finalement assez rapide, fut introduit # # le regoupement des commandes par paquets de 8... # set RSeQuEnCe=`Genom6` # Definition de la nouvelle '$SeQuEnCe' Repetee... # set NuMeRo_ImAgEA=$premiereI set NuMeRo_ImAgER=$premiereI alias genere 'set gImAgE_A="\!*" ; \\ set ImAgE_R=`$xci/nombres$X A=$RSeQuEnCe. premiere=$NuMeRo_ImAgER derniere=$NuMeRo_ImAgER` ; \\ $CP $gImAgE_A$P_PostScript_RVB $xT/$ImAgE_R$P_PostScript_RVB ; \\ @ NuMeRo_ImAgER = $NuMeRo_ImAgER + 1 ; \\ unset gImAgE_A ImAgE_R' foreach NImAgE_A1($LSeQuEnCe) set NoMbRe_Repetitions=$ListeRepetitions[$NuMeRo_ImAgEA] set ItErAtIoN=1 while ($ItErAtIoN <= $NoMbRe_Repetitions) genere $xT/$SeQuEnCe.$NImAgE_A1 # La repetition possible de chaque image a ete introduite le 20180209091848... # @ ItErAtIoN = $ItErAtIoN + 1 end @ NuMeRo_ImAgEA = $NuMeRo_ImAgEA + 1 end @ derniereI = $NuMeRo_ImAgER - 1 set SeQuEnCe=$RSeQuEnCe # La sequence est remplacee par la sequence Repetee... # FileTmpE FCoDaGe @ NImAgEs = $derniereI - $premiereI + 1 @ MuLtIpLe_12 = $NImAgEs % $NombreImages_MPEG if ($MuLtIpLe_12 > 0) then # Dispositif introduit le 20180204083136 afin que le nombre d'images soit un multiple de 12. # # En effet, une sequence d'images doit etre la repetition de blocs de 12 images du type : # # # # IBBPBBPBBPBBI # # # # Avec : # # # # I : image de reference avec codage Interne et sans lien avec les autres, # # P : image Predictive obtenue par difference avec les images precedentes, # # B : image predictive obtenue par difference avec la precedente et la # # suivante. # # # @ PrEmiErE = $derniereI + 1 @ DeRnIeRe = $NImAgEs / $NombreImages_MPEG @ DeRnIeRe = $DeRnIeRe + 1 @ DeRnIeRe = $DeRnIeRe * $NombreImages_MPEG set LaSt_ImAgE=`ls $xT/$SeQuEnCe.*$P_PostScript_RVB | $TAI -1` set LSeQuEnCe12=`$xci/nombres$X A=$xT/$SeQuEnCe. p=$PrEmiErE d=$DeRnIeRe pas=$Pas CAL1=FAUX` foreach ISeQuEnCe12 ($LSeQuEnCe12) #20180309130143____: $CP $xT/$SeQuEnCe.$LSeQuEnCe[$#LSeQuEnCe]$P_PostScript_RVB $ISeQuEnCe12$P_PostScript_RVB # $CP $LaSt_ImAgE $ISeQuEnCe12$P_PostScript_RVB # Ainsi, on ajoute suffisamment d'images afin que le nombre d'images soit un multiple de 12. # # # # ATTENTION : cette copie '$CP' a ete supprimee (par accident ?) le 20180209105803. Il me # # me semble qu'il faut la retablir, ce qui est fait le 20180309130143. A cette date, je crois # # comprendre que c'est a l'occasion de l'introduction qu'a eu lieu cette destruction... # end else endif #20111103140351____: set Nombre_NOIR=2 # # Sequence introduite le 20030619095403 afin d'introduire des images NOIRes en tete de # # chaque sequence convertie en '$MPEG' afin de supprimer des defauts de codage qui # # apparaissent sur la premiere image du flux '$MPEG'. Cela s'est vu avec les flux # # 'v $xiak/NCOR.f1$MPEG' et 'v $xiak/NCOR.f9$MPEG'... # switch ("$mHOTE") # Definition de '$Nombre_NOIR'... # # # # Discrimination des differentes MACHINEs possibles : # case "$CCVR11": case "$CCVR12": case "$CCVR13": case "$CCVR14": case "$CCVR21": case "$CMAP21": case "$CMAP22": case "$CMAP23": case "$CMAP24": case "$CMAP25": case "$CMAP26": case "$CMAP27": case "$CMAP28": case "$CMAP29": case "$EDFR12": case "$EDFR13": case "$EDFR14": case "$EDFR15": case "$EDFR21": case "$EDFR22": case "$EDFR22h": case "$IDRI11": case "$IDRI21": case "$INFO11": case "$INFO21": case "$INFO22": case "$INFO23": case "$INFO24": case "$INFO25": case "$INFO26": case "$LACT11": case "$LACT12": case "$LACT14": case "$LACT15": case "$LACT16": case "$LACT17": case "$LACT71": case "$LACT21": case "$LACT22": case "$LACT23": case "$EDFR11": case "$HOME11": case "$LACT27": case "$LACT28": case "$LACT29": case "$LHYX11": case "$LINX11": case "$LINX12": set Nombre_NOIR=2 # Sequence introduite le 20030619095403 afin d'introduire des images NOIRes en tete de # # chaque sequence convertie en '$MPEG' afin de supprimer des defauts de codage qui # # apparaissent sur la premiere image du flux '$MPEG'. Cela s'est vu avec les flux # # 'v $xiak/NCOR.f1$MPEG' et 'v $xiak/NCOR.f9$MPEG'... # breaksw case "$LACT18": case "$LACT19": case "$LACT1A": case "$LACT1B": set Nombre_NOIR=0 # Sequence supprimee le 20111103140351 car, en effet, sa presence fait perdre a l'animation # # ses couleurs sur '$LACT19'. De plus sur '$LACT18' c'est tout simplement inutile, si ce # # n'est que l'animation apparait alors plein ecran dans sa fenetre, alors qu'anterieurement # # il y avait pas mal de NOIR a gauche, en dessous et a droite... # breaksw default: # Cas des MACHINEs non reconnues : # EROR "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')." breaksw endsw if ($Nombre_NOIR > 0) then FileTmpB Image_NOIR $xci/init$X \ niveau=$NOIR \ R=$Image_NOIR \ $formatI # Generation d'une image 'NOIR'... # set NSeQuEnCe=`Genom6` set NLSeQuEnCe=`$xci/nombres$X A=$NSeQuEnCe. p=1 d=$Nombre_NOIR pas=1 lignes=VRAI CAL1=FAUX` # Generation de la liste des numeros d'images a encoder en '$MPEG'. # foreach INLSeQuEnCe ($NLSeQuEnCe) #20111103142329____: $xci/PostScript$Z $Image_NOIR $xiP/noir $xT/$INLSeQuEnCe 1 FAUX "$K_VIDE" $dimX $dimY 0 0 # $xci/PostScript$Z $Image_NOIR $xiP/noir $xT/$INLSeQuEnCe 1 FAUX "$K_VIDE" $dimX $dimY 0 0 VRAI VRAI end set NLSeQuEnCe=`echo $NLSeQuEnCe | $R "$K_BLANC" "$K_NL" | $SE -e 's/$/'"$P_PostScript_RVB/"` # Generation de la liste des images NOIRes a encoder en '$MPEG'. # FileTmpE Image_NOIR else set NLSeQuEnCe="$K_VIDE" # Afin de ne pas ajouter d'images NOIRes en tete... # endif #20111103142329____: PushdC $xT # #20170602143613____: PushdC $xTV # PushdC $xT # On se place explicitement dans '$xT' (directory contenant la sequence '$SeQuEnCe') afin # # que la liste '$LSeQuEnCe' ci-apres ne deborde pas... # #20180204110159____:set LSeQuEnCe=`echo "$LSeQuEnCe" | $R "$K_BLANC" "$K_NL" | $SE -e "s/^/$SeQuEnCe./" -e 's/$/'"$PostScript/"` # set LSeQuEnCe=`ls $SeQuEnCe.*$P_PostScript_RVB` # Generation de la liste des images a encoder en '$MPEG'. # set SaMpLiNg=`$CONVERT -help | $GRE "\-sampling.factor" | $AW ' { print $1 } '` # Ceci a ete introduit le 20040301113633 car, en effet, on trouve : # # # # -sampling_factor # # # # sur '$LACT15' et : # # # # -sampling-factor # # # # sur '$LACT16'... # switch ("$mHOTE") # Definition complementaire de '$SaMpLiNg'... # # # # Discrimination des differentes MACHINEs possibles : # case "$CCVR11": case "$CCVR12": case "$CCVR13": case "$CCVR14": case "$CCVR21": case "$CMAP21": case "$CMAP22": case "$CMAP23": case "$CMAP24": case "$CMAP25": case "$CMAP26": case "$CMAP27": case "$CMAP28": case "$CMAP29": case "$EDFR12": case "$EDFR13": case "$EDFR14": case "$EDFR15": case "$EDFR21": case "$EDFR22": case "$EDFR22h": case "$IDRI11": case "$IDRI21": case "$INFO11": case "$INFO21": case "$INFO22": case "$INFO23": case "$INFO24": case "$INFO25": case "$INFO26": case "$LACT11": case "$LACT12": case "$LACT14": case "$LACT15": case "$LACT17": case "$LACT71": case "$LACT21": case "$LACT22": case "$LACT23": case "$EDFR11": case "$HOME11": case "$LACT27": case "$LACT28": case "$LACT29": case "$LHYX11": case "$LINX11": case "$LINX12": set SaMpLiNg="$SaMpLiNg 2x1" breaksw case "$LACT16": set SaMpLiNg="$K_VIDE" # Le 20040302140553, cette option a du etre supprimee pour eviter le message : # # # # /usr/bin/convert: Unable to write MPEG parameters (/tmp/magic...) # # [No such file or directory]. # # # # provoquant ensuite l'abort de '$CONVERT'... # breaksw case "$LACT18": set SaMpLiNg="$K_VIDE" # Le 20111101092313, cette option a du etre supprimee pour eviter le message : # # # # convert: unable to write MPEG parameters `.../magick-...'. # # # # et qui donnait un fichier '$MPEG' vide (d'ou un taux de compression infini...). # breaksw case "$LACT19": set SaMpLiNg="$K_VIDE" # Introduit le 20111101092313 pour voir... # breaksw case "$LACT1A": set SaMpLiNg="$K_VIDE" breaksw case "$LACT1B": set SaMpLiNg="$K_VIDE" breaksw default: # Cas des MACHINEs non reconnues : # EROR "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')." breaksw endsw FileTmpB FCoNvErSiOn $Y set MuLtIpLy="x" set ArGs_CONVERT="$K_VIDE" set ArGs_CONVERT="$ArGs_CONVERT"" -size $dimX$MuLtIpLy$dimY" set ArGs_CONVERT="$ArGs_CONVERT"" -depth $NBitsOctet" set ArGs_CONVERT="$ArGs_CONVERT"" -quality $Quality" set ArGs_CONVERT="$ArGs_CONVERT"" $SaMpLiNg" echo "$LSeQuEnCe" | \ $R "$K_BLANC" "$K_NL" | \ $SE -e "s/$P_PostScript_RVB"'$//' | \ $AW ' { print "$CONVERT $ArGs_CONVERT -flip " $1 "$P_PostScript_RVB JPEG:" $1 "$JPEG" } ' \ >>! $FCoNvErSiOn (source $FCoNvErSiOn) |& \ $GRE -v -f $xci/Gen_MPEG$vv$D/SupMesErreurs$vv$gre # Cette conversion intermediaire '$P_PostScript_RVB' en '$JPEG' a ete inspiree par le # # probleme decrit dans 'v $xiMo/creation$Z implantee.le.20071128140757'. Elle fut introduite # # le 20180206103229... # # # # En cette absence, le mode "-verbose" de '$CONVERT' ('$RVB's --> '$MPEG') donnait pour la # # premiere image : # # # # (...).jpg RGBA 780x575 780x575+0+0 8-bit sRGB # # # # et pour toutes les suivantes : # # # # (...).jpg[...] RGBA 780x575 780x575+0+0 8-bit Bilevel Gray # # # # qui etaient donc en tout ou rien et donnaient du NOIR. Le '$MPEG' alors genere montrait # # la premiere image correcte et toutes les suivantes NOIR... # # # # On notera que contrairement a 'v $xiMo/creation$Z implantee.le.20071128140757' cette # # conversion intermediaire '$P_PostScript_RVB' en '$JPEG' est faite pour tous les SYSTEMEs # # de type 'SYSTEME_APC_Linux', mais cela ne peut faire de mal... # FileTmpE FCoNvErSiOn set LSeQuEnCe=`echo $LSeQuEnCe | $SE -e "s/$P_PostScript_RVB/$JPEG/g"` switch ("$mHOTE") # Conversion '$MP4' effective (introduit sous cette forme le 20180718115343). # # # # Discrimination des differentes MACHINEs possibles : # case "$CCVR11": case "$CCVR12": case "$CCVR13": case "$CCVR14": case "$CCVR21": case "$CMAP21": case "$CMAP22": case "$CMAP23": case "$CMAP24": case "$CMAP25": case "$CMAP26": case "$CMAP27": case "$CMAP28": case "$CMAP29": case "$EDFR12": case "$EDFR13": case "$EDFR14": case "$EDFR15": case "$EDFR21": case "$EDFR22": case "$EDFR22h": case "$IDRI11": case "$IDRI21": case "$INFO11": case "$INFO21": case "$INFO22": case "$INFO23": case "$INFO24": case "$INFO25": case "$INFO26": case "$LHYX11": case "$LINX11": case "$LINX12": set A0_9="[$Alphabet_0_9][$Alphabet_0_9][$Alphabet_0_9][$Alphabet_0_9]" set GLSeQuEnCe=`echo "$LSeQuEnCe" | $R "$K_BLANC" "$K_NL" | $SE -e "s/$A0_9\($JPEG\)"'$/%04d\1/' | $SOR -u` unset A0_9 $FFMPEG -loglevel quiet -i $GLSeQuEnCe $FluxResultat$MP4 # Cela a ete implemente sous cette forme le 20180718115343 car, en effet, sur toutes les # # MACHINEs de type '$CMAP28' le passage par '$CONVERT' donnait le message : # # # # convert: delegate failed `"ffmpeg" -v -1 -mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 300 # # # # En fait, 'ffmpeg' etait bien appele, mais il renvoyait un '$status' (=1) qui correspondait # # au probleme suivant : # # # # Codec AVOption mbd (...) is not a decoding option. # # # # et en fait, il faut supprimer toutes les options de '$FFMPEG' qui sont definies dans # # 'v /etc/ImageMagick/delegates.xml encode=.mpeg:encode.' pour que cela marche. Ne pouvant # # pas modifier ce fichier de definition des "delegates" de '$CONVERT', j'ai decide d'appeler # # directement '$FFMPEG' sans aucune option et cela marche... # breaksw case "$LACT11": case "$LACT12": case "$LACT14": case "$LACT15": case "$LACT16": case "$LACT17": case "$LACT18": case "$LACT19": case "$LACT1A": case "$LACT1B": case "$LACT71": case "$LACT21": case "$LACT22": case "$LACT23": case "$EDFR11": case "$HOME11": case "$LACT27": case "$LACT28": case "$LACT29": $CONVERT $ArGs_CONVERT \ $NLSeQuEnCe \ $LSeQuEnCe \ $FluxResultat$MP4 |& \ $GRE -v -f $xci/Gen_MPEG$vv$D/SupMesErreurs$vv$gre # Et enfin, compression 'MPEG'. Les facteurs de qualite ont ete introduits le 20030602105446 # # grace aux indications de 'v http://studio.imagemagick.org/www/utilities$HTML', les # # options choisies etant destinees a donner la meilleure qualite : # # # # -quality 100 : qualite maximale (100%), # # $SaMpLiNg 2x1 : echantillonnage de type 4:2:2. # # # # avec la '$Quality' par defaut... # # # # A la date du 20180206131551 le '$MPEG' est tres mauvais, alors qu'individuellement, # # chaque image '$JPEG' est parfaite. Ou est donc le probleme de qualite ? # # # # La solution a ete trouvee le 20180206132323 : il faut genere du '$MP4' et non pas du # # '$MPEG', puis rebaptiser... # breaksw default: # Cas des MACHINEs non reconnues : # EROR "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')." breaksw endsw $MV $FluxResultat$MP4 $FluxResultat$MPEG $DELETE $SeQuEnCe* # Nettoyage des fichiers '$PostScript' generes... # PopdC # Et enfin, sortie de '$xT'... # breaksw case "SYSTEME_SG4D20G_IRIX_CC": case "SYSTEME_SG4D25TG_IRIX_CC": case "SYSTEME_SG4D310VGX_IRIX_CC": case "SYSTEME_SG4D35TG_IRIX_CC": case "SYSTEME_SG4D85GT_IRIX_CC": case "SYSTEME_SGIND308_IRIX_CC": case "SYSTEME_SGIND324_IRIX_CC": case "SYSTEME_SGIND3GA_IRIX_CC": case "SYSTEME_SGIND408_IRIX_CC": case "SYSTEME_SGIND424_IRIX_CC": case "SYSTEME_SGIND4GA_IRIX_CC": case "SYSTEME_SGIND508_IRIX_CC": case "SYSTEME_SGIND524_IRIX_CC": case "SYSTEME_SGIND5GA_IRIX_CC": case "SYSTEME_SGIND808_IRIX_CC": case "SYSTEME_SGIND824_IRIX_CC": case "SYSTEME_SGIND8GA_IRIX_CC": case "SYSTEME_SGINDA08_IRIX_CC": case "SYSTEME_SGINDA24_IRIX_CC": case "SYSTEME_SGINDAGA_IRIX_CC": case "SYSTEME_SGPCM801_IRIX_CC": case "SYSTEME_SGPCMA01_IRIX_CC": EROR "L'encodage 'MPEG' n'est pas disponible sur '$SYSTEME' (1)." breaksw case "SYSTEME_IMPOSSIBLE": # Cas des SYSTEMEs pour lesquels cette sequence n'a pas de sens : # EROR "Sequence insensee pour '"$SYSTEME"'." breaksw default: # Cas des SYSTEMEs non reconnus : # EROR "'SYSTEME' definit un systeme inconnu," EROR "elle vaut : '"$SYSTEME"'." breaksw endsw if ($P_PostScript_RVB == $RVB) then unsetenv PostScript_RVB else endif else EROR "L'encodage 'MPEG' n'est pas disponible sur '$SYSTEME' (2)." # On ne genere pas de fichier '$MPEG' (meme vide) afin de ne rien transmettre au serveur. # endif