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; }
//
'
Rejeter la notice
Nouvelle Formation Prise de son : les inscriptions sont ouvertes !
Maîtrisez la qualité de vos prises de son avec notre formation théorique et pratique de 3 jours ! Du 14 au 16 mai 2024 à Paris.
'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é parDiego Bataillon 24 Avril 2024, à 10:15
-
Publié parDiego Bataillon 24 Avril 2024, à 09:51
-
Publié parDiego Bataillon 24 Avril 2024, à 09:38
-
Publié parDiego Bataillon 17 Avril 2024
-
Publié parDiego Bataillon 16 Avril 2024
-
-
-
Publié parQuentin Chaumy 22 Avril 2024, à 15:23
-
Publié parMarina 22 Avril 2024, à 15:22
-
Publié parMerlyche 15 Mars 2024
-
Publié parMarina 14 Décembre 2023
-
Publié parfrançois 29 Septembre 2023
-
-
-
-
-
Transfert MiniDV (je désespère !)
BKW00 27 Mars 2024
-
Web radio lycée
sebpog 30 Mars 2024
-
Problème export Processeur AMD Ryzen 7
vyse_arcadia 4 Avril 2024
-
Comment se stabiliser pour une prise de vue
bcauchy 29 Mars 2024
-
Achat caméra documentaire cinéma
Robin montage 28 Mars 2024
Chargement... -
Transfert MiniDV (je désespère !)
-
Chargement...
-
Chargement...
-
-
Adaptateur EF mount pour EOS M50
mikesarado 25 Avril 2024, à 19:48
-
Catalyst gratuit pour la stabilisation de l'a6700
jakin1950 24 Avril 2024, à 18:10
-
Média Offline étrange
tibozzzz 24 Avril 2024, à 13:36
-
Adobe intègre les IA génératives à Premiere Pro !
Diego Bataillon 24 Avril 2024, à 10:15
-
Atlas Orion : un 18mm T2, 135mm T2.2 et 200mm T3.2 pour compléter la série
Diego Bataillon 24 Avril 2024, à 09:51
Chargement... -
Adaptateur EF mount pour EOS M50
Dernières occasions
Dernières formations
-
Catégorie: Formations vidéoHirmance publié le 1 Sep 2023
-
Catégorie: FormationsRepaire publié le 19 Jul 2022