Contexte
Devant quelques demandes ces derniers temps... et des résultats probants... voici la moulinette de réparation des fichiers projets d'Adobe Première Pro victimes du bug "erreur Time.cpp - 328" ou "Keyframe.h - 138" publiée en première mondiale sur le repaire, sous licence LGPL (free software library).
Post traitant de ce sujet sur le repaire, et permettant le téléchargement de la moulinette dans un .zip:
http://www.repaire.net/forums/adobe-premiere-pro/101494-bug-premiere-besoin-dassistance-time.html
Mise en oeuvre
C'est un shell unix contenant une unique commande awk. PPro tourant sous Windows, et peu de repairenautes disposant d'un dual boot Linux, le plus simple est d'utiliser cygwin:
1. Récupérer et installer cygwin: http://www.cygwin.com lien "Install or update now!". Choisir lors de l'installation le monde de compatibilité MS-DOS/Windows et non Unix (sinon, il faut convertir au format unix le script proproj_virgule.sh avec dos2unix pour pouvoir l'utiliser).
2. Choix 1: Copier le texte ci-après dans un fichier texte (Notepad) en l'enregistrer sous le nom "prproj_virgules.sh" dans un répertoire c:\temp par exemple, sans ligne vide au début (la première ligne doit impérativement être "#!/bin/sh")
2bis. Choix 2: récupérer le fichier prproj_virgules_v1.1.zip sur le post indiqué ci-dessus, et décompresser le fichier: il contient le fichier prproj_virgules.sh
3. Copier dans ce même répertoire votre fichier toto.proproj endommagé
4. Lancer cygwin
5. Aller dans le répertoire c:\temp avec la commande "cd /cygdrive/c/temp"
6. Rendre executable la mounlinette avec la commande: "chmod a+x prproj_virgules.sh"
7. Lancer la moulinette avec la commande "./proproj_virgule.sh <toto.prproj >toto_new.prproj"
8. Rapatrier toto_new.prproj dans le répertoire d'origine et l'ouvrir avec PPro pour voir si ça marche...
Fichier proproj_virgule.sh
#!/bin/sh
#======================
# Syntaxe:
# ./prproj_virgules.sh <toto.prproj >toto_new.prproj
#
#======================
# Historique des révisions:
#
# v1.1: ajout prise en compte tag CurrentValue par gribouille le 30.11.2007. Merci ogt pour la decouverte du bug !
#
# v1.0: développement initial, mise au point et documentation intégrée par gribouille du 13.09.2006 au 26.09.2007.
#
#======================
# Objet:
# Ce programme est destiné (sans aucune garantie) à récupérer des fichiers .prproj d'Adobe Premiere Pro 1.5 et 2.0
# victimes du problème connu sous le nom de "erreur Time.cpp - 328" ou "Keyframe.h - 138"
# se produisant parfois sous une version Française de Windows (séparateur , au lieu de . dans
# les settings de Windows).
# Lien utile: http://www.repaire.net/forums/adobe-premiere-pro/101494-bug-premiere-besoin-dassistance-time.html
#
#======================
# Mini-HOWTO de mise en oeuvre sous Windows:
# 1. Récupérer et installer cygwin: http://www.cygwin.com/ lien "Install or update now!"
# 2. Placer le présent fichier "prproj_virgules.sh" dans un répertoire c:\temp par exemple.
# 3. Copier dans ce même répertoire votre fichier toto.proproj endommagé
# 4. Lancer cygwin
# 5. Aller dans le répertoire c:\temp avec la commande "cd /cygdrive/c/temp"
# 6. Rendre executable la présent fichier avec la commande: "chmod a+x prproj_virgules.sh"
# 7. Lancer la moulinette avec la commande "./proproj_virgule.sh <toto.prproj >toto_new.prproj"
# 8. Rapatrier toto_new.prproj dans le répertoire d'origine et l'ouvrir avec PPro pour voir si ça marche...
#
#======================
# License:
# Ce programme est un logiciel libre. Vous pouvez l'utiliser, le modifier, le redistribuer
# dans les termes de la LGPL v3.0 ou ultérieure.
# Détails: http://www.gnu.org/licenses/lgpl.html
##################################################################
# prproj_virgules.sh
# Copyright (c) 2007 gribouille
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 3 of the License, or (at your option) any later version.
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# http://www.gnu.org/licenses/lgpl.html
#
##################################################################
awk 'BEGIN{bDebug=0;
}
function AfficherErreur(szUnMess, szUneLgn)
{
print "WARNING <", szUnMess, "> ligne <", szUneLgn, ">." >"/dev/stderr"
print szUneLgn;
next;
}
function RemplacerVirgules(szUneLgn, nUnNbArguments)
{
szTmp=szUneLgn; nVirgules=gsub(",", "", szTmp);
szTmp=szUneLgn; nPoints=gsub("\\.", "", szTmp);
szTmp=szUneLgn; nDeuxPoints=gsub(":", "", szTmp);
if(nVirgules <= nUnNbArguments-1) {
# Pas de virgule en trop: tout va bien
szLgn=szUneLgn;
} else {
# trop de virgules: on reconstitue les , et les .
if(nUnNbArguments == 1) {
# facile: tout en .
szLgn=szUneLgn;
gsub(",", ".", szLgn);
if(bDebug) print "%%%1", szUneLgn, "-->", szLgn;
} else if(nUnNbArguments == 2) {
# cas du EndPosition
# step 1: tout en ,
if(nVirgules+nPoints != 3) AfficherErreur("bug +!=3", szUneLgn);
szLgn=szUneLgn;
gsub("\\.", ",", szLgn);
# step 2: on passe la premiere , en .
sub(",", "\\.", szLgn);
# step 3: on passe la troisieme , en .
sub(",", "£", szLgn);
sub(",", ".", szLgn);
sub("£", ",", szLgn);
if(bDebug) print "%%%2", szUneLgn, "-->", szLgn;
} else {
AfficherErreur("Laborieux", szUneLgn);
# laborieux
szLgn=szUneLgn;
szDeb=substr(szLgn, 1, index(szLgn, ">"));
szArgs=substr(szLgn, index(szLgn, ">")+1, length(szLgn));
szFin=substr(Args, index(szArgs, "<"), length(szArgs));
szArgs=substr(szArgs, 1, index(szLgn, "<")-1);
if(bDebug) print "%%%0", szUneLgn, "-->", szDeb, szArgs, szFin;
# step 1: tout en ,
gsub("\\.", ",", szLgn);
# step 2: on passe la premiere , en .
nArgs=split(szLgn, tszArgs, ",");
###for(nIter=1; nIter <= nArgs; nIter++) print ":::", tszArgs[nIter];
if(bDebug) print "%%%3\n", szUneLgn, "\n-->\n", szLgn;
}
}
print szLgn;
szLgn=szUneLgn;
#if(bDebug) print "===1", szLgn;
szLgn=substr(szLgn, index(szLgn, ">")+1, length(szLgn));
#if(bDebug) print "===2", szLgn;
szLgn=substr(szLgn, 1, index(szLgn, "<")-1);
#if(bDebug) print "===3", szLgn;
nArgs=split(szLgn, tszArgs, ",");
###for(nIter=1; nIter <= nArgs; nIter++) print ":::", tszArgs[nIter];
if(bDebug) printf("### nVirgules=%d, nPoints=%d, nArgs=%d, szLgn=%c%s%c.\n", nVirgules, nPoints, nUnNbArguments, 34, szUneLgn, 34);
if(bDebug) printf("=== index>=%d\n", index(szUneLgn, ">"));
}
function RemplacerVirgulesPath(szUneLgn, szUnReplacePathInit, szUnReplacePath)
{
# szReplacePath = "0010...1001" pour lequel 0=on ne remplace pas; et 1=on remplace; cyclique
# Tant qu"a faire, on se complique la vie meme si c"etait deja bon
szLgn=szUneLgn; gsub("\\.", ",", szLgn);
szReplacePath=szUnReplacePathInit;
# Metriques
szTmp=szLgn; nVirgules=gsub(",", "", szTmp);
szTmp=szLgn; nPointVirgules=gsub(";", "", szTmp);
if(bDebug) printf("kk1 nVirgules=%d, szRP=%c%s%c, szLgn=%c%s%c.\n", nVirgules, 34, szReplacePath, 34, 34, szLgn, 34);
while(nVirgules >= 1) {
if(szReplacePath == "") szReplacePath=szUnReplacePath;
if(substr(szReplacePath, 1, 1) == "1") {
# on remplace par un .
sub(",", ".", szLgn);
} else {
# on remplace par une virgule (£ temporairement)
sub(",", "£", szLgn);
if(bDebug) printf("kk3 kjsdgfkjsdhf\n");
}
szReplacePath=substr(szReplacePath, 2, length(szReplacePath))
nVirgules=nVirgules-1;
if(bDebug) printf("kk2 nVirgules=%d, szRP=%c%s%c, szLgn=%c%s%c.\n", nVirgules, 34, szReplacePath, 34, 34, szLgn, 34);
}
gsub("£", ",", szLgn);
printf("%s", szLgn);
}
function RemplacerVirgulesKeyframes(szUneLgn)
{
nArgs=split(szUneLgn, tszArgs, ";");
### if(bDebug) print ":::", sztszArgs[nIter];
# Pour chaque portion entre ;
for(nIter=1; nIter <= nArgs; nIter++) {
szLgn=tszArgs[nIter];
szTmp=szLgn; nDeuxPoints=gsub(":", "", szTmp);
szTmp=szLgn; gsub("\\.", ",", szTmp); nVirgules=gsub(",", "", szTmp);
if(nDeuxPoints == 0) {
if(nVirgules % 12 == 0) RemplacerVirgulesPath(szLgn, "", "010001010101");
else if(nVirgules % 11 == 0) RemplacerVirgulesPath(szLgn, "", "00001010101");
else AfficherErreur("Nombre de virgules RemplacerVirgulesKeyframes inattendu.", szLgn);
} else if(nDeuxPoints == 1) RemplacerVirgulesPath(szLgn, "011", "0001010101");
else AfficherErreur("Nombre de deux points RemplacerVirgulesKeyframes inattendu.", szUneLgn);
if(nIter < nArgs) printf(";");
}
printf("\n");
}
function RemplacerVirgulesStartKeyframe(szUneLgn)
{
szTmp=szUneLgn; nDeuxPoints=gsub(":", "", szTmp);
szTmp=szUneLgn; gsub("\\.", ",", szTmp); nVirgules=gsub(",", "", szTmp);
if(nDeuxPoints == 0) {
if(nVirgules == 2) szInit="00"; # PPro 1.5
else if(nVirgules == 3) szInit="010"; # PPro 1.5
else if(nVirgules % 10 == 2) szInit="01"; # PPro 2.0
else if(nVirgules % 10 == 1) szInit="0"; # PPro 2.0
else AfficherErreur("Nombre de virgules RemplacerVirgulesKeyframes inattendu.", szUneLgn);
} else if(nDeuxPoints == 1) szInit="011";
else AfficherErreur("Nombre de deux points RemplacerVirgulesKeyframes inattendu.", szUneLgn);
RemplacerVirgulesPath(szUneLgn, szInit, "0001010101");
printf("\n");
}
function RemplacerVirgulesCurrentValue(szUneLgn)
{
# Exception du <CurrentValue>0,0<CurrentValue> à ne pas modifier
szTmp=szUneLgn; nToto=gsub(">0,0<", "", szTmp);
if(nToto > 0) print szUneLgn;
else RemplacerVirgules(szUneLgn, 1);
}
/<CurrentValue>/ { RemplacerVirgulesCurrentValue($0); next; }
/<PlaybackSpeed>/ { RemplacerVirgules($0, 1); next; }
/<TL.SQTimePerPixel>/ { RemplacerVirgules($0, 1); next; }
#/<DateShot>/ { RemplacerVirgules($0, 1); next; }
/<StartKeyframe>/ { RemplacerVirgulesStartKeyframe($0); next; }
/<Keyframes>/ { RemplacerVirgulesKeyframes($0); next; }
/<LowerBound>/ { RemplacerVirgules($0, 1); next; }
/<UpperBound>/ { RemplacerVirgules($0, 1); next; }
/<Gain>/ { RemplacerVirgules($0, 1); next; }
/<BorderWidth>/ { RemplacerVirgules($0, 1); next; }
/<EndPosition>/ { RemplacerVirgules($0, 2); next; }
/<StartPercent>/ { RemplacerVirgules($0, 1); next; }
/<ActionSafeHeight>/ { RemplacerVirgules($0, 1); next; }
/<TitleSafeHeight>/ { RemplacerVirgules($0, 1); next; }
/<TitleSafeWidth>/ { RemplacerVirgules($0, 1); next; }
/<ActionSafeWidth>/ { RemplacerVirgules($0, 1); next; }
//
'

'Premiere Pro Moulinette récupération prproj victime bug ''Time.cpp - 328'' ou ''Keyframe.h - 138'''
'Premiere Pro Moulinette récupération prproj victime bug ''Time.cpp - 328'' ou ''Keyframe.h - 138'''
► Commentaires
0
► Commentaires
0
-
-
Publié parLucas.janiszewski 27 Juin 2025, à 17:05
-
Publié parLucas.janiszewski 26 Juin 2025, à 18:16
-
Publié parLucas.janiszewski 4 Juin 2025
-
Publié parLucas.janiszewski 28 Mai 2025
-
Publié parLucas.janiszewski 22 Mai 2025
-
-
-
Publié parFranz Olm 29 Janvier 2025
-
Publié parRepaire 29 Août 2024
-
Publié parGRG 11 Juillet 2024
-
Publié parMerlyche 14 Mai 2024
-
Publié parQuentin Chaumy 22 Avril 2024
-
-
-
-
-
comment enregistrer sur VHS en passant par un décodeur G9
jawsfan1978 16 Juin 2025
-
C80 vs C70vsEOS R5MarkII
Lacombe 4 Juin 2025
-
Faire matcher une FX3 avec un A7-4
AlessioOo 12 Juin 2025
-
Film super8 sonore
angoul 4 Juin 2025
-
enregister le son des oiseaux le matin au lever du soleil
jakin1950 3 Juin 2025
Chargement... -
comment enregistrer sur VHS en passant par un décodeur G9
-
Chargement...
-
Chargement...
-
-
importation fichier impossible
dmoss 28 Juin 2025, à 12:20
-
supprimer un effet titre .drfx
boudsy 28 Juin 2025, à 08:33
-
Laowa 8-15mm T2.8 : un nouveau (et original) zoom fisheye
Lucas.janiszewski 27 Juin 2025, à 17:05
-
Raccourcis clavier
Licioula 27 Juin 2025, à 16:14
-
Réinstaller windows 11 sur un PC incompatible :
jakin1950 27 Juin 2025, à 09:19
Chargement... -
importation fichier impossible
Dernières occasions
Dernières formations
-
Catégorie: FormationsRepaire publié le 23 Oct 2024