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 24 Avril 2025
-
Publié parLucas.janiszewski 23 Avril 2025
-
Publié parLucas.janiszewski 15 Avril 2025
-
Publié parLucas.janiszewski 8 Avril 2025
-
Publié parLucas.janiszewski 7 Avril 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
-
-
-
-
-
[rech] Conseils choix matériel captation video spécifique
AlYazing 14 Avril 2025
-
Peut-on encore exporter en 1080p ?
jakin1950 16 Avril 2025
-
Comparaison Sony a6700 et Osmo 5 pro
jakin1950 7 Avril 2025
-
Une camera indispensable...mais laquelle ?
AQW333 6 Avril 2025
-
100 ou 200 Mbps
Lolive67 23 Avril 2025
Chargement... -
[rech] Conseils choix matériel captation video spécifique
-
Chargement...
-
Chargement...
-
-
Cherche driver pour carte vidéo PCI avec puce FUSION 878A
tahitibub 30 Avril 2025, à 10:53
-
le mieux est l'ennemi du bien : Davinci Wide Gamut
jakin1950 29 Avril 2025, à 19:04
-
Décalage piste HF
MikyBird 29 Avril 2025, à 13:06
-
AF sur Canon R6 mkII avec AF Servo
cptbartok 28 Avril 2025, à 13:57
-
Entrée micro défectueuse
kovatch 26 Avril 2025, à 15:18
Chargement... -
Cherche driver pour carte vidéo PCI avec puce FUSION 878A
Dernières occasions
Dernières formations
-
Catégorie: FormationsRepaire publié le 23 Oct 2024
Vous souhaitez annoncer sur le Repaire ? Contactez-nous