Bonjour, je tiens à m'excuser d'avance si je n'ai pas trouvé la solution ou tout simplement un topic sur le sujet mais je vous assure que j'ai cherché avant de venir poster une question ici..
Voilà cela fait quelques jours que je cherche une solution pour parser efficacement un fichier srt afin de gérer des sous titres dans un player flash.
Mon problème survient dans le fait de récupérer une valeur que je traite dans mon onData, impossible de récupérer la valeur de "subtitles".
Voilà je vous met un petit bout de code, du moins celui qui correspond et si vous avez une idée sur la manière de procéder ou dans le pire des cas si vous avez une autre méthode à me proposer... Je suis preneur.
Code:
// Gestion des sous-titres
function Soustitres(){
// Nom de la video
var file="video/videoMagasin.flv";
var vSrt:LoadVars = new LoadVars();
vSrt.load(file.substr(0, file.length-3)+"srt",vSrt,"GET" );
vSrt.onData = function(src:String) {
if (src != undefined) {
src = src.split("\r\n" ).join("\n" );
subtitles = src.split("\n\n" );
for (var i=0; i<subtitles.length; i++) {
var detail:Array = subtitles[i].split("\n" );
var id:Number = Number(detail.shift());
var time:String = String(detail.shift());
var timeDetail:Array = time.split(" --> " );
var timeStart:Array = timeDetail[0].split("," )[0].split(":" ).concat(timeDetail[0].split("," )[1]);
var timeStartHour:Number = Number(timeStart[0]);
var timeStartMinute:Number = Number(timeStart[1]);
var timeStartSecond:Number = Number(timeStart[2]);
var timeStartMilli:Number = Number(timeStart[3]);
var timeEnd:Array = timeDetail[1].split("," )[0].split(":" ).concat(timeDetail[1].split("," )[1]);
var timeEndHour:Number = Number(timeEnd[0]);
var timeEndMinute:Number = Number(timeEnd[1]);
var timeEndSecond:Number = Number(timeEnd[2]);
var timeEndMilli:Number = Number(timeEnd[3]);
var subtext:String = detail.join("\n" );
//trace(timeEndSecond);
//trace(timeStartSecond);
//trace(subtext);
subtitles[i] = {id:id, subtext:subtext,
timeStart:timeStartHour*60*60*1000+timeStartMinute*60*1000+timeStartSecond*1000+timeStartMilli,
timeEnd:timeEndHour*60*60*1000+timeEndMinute*60*1000+timeEndSecond*1000+timeEndMilli};
//trace(subtitles[i].timeStart);
//trace (typeof subtitles[i]);
}
}
};
}
function getSubtitle():String
{Soustitres();
for ( i=0; i<subtitles.length; i++) {
if (ns.time*1000+millisecond >= subtitles[i].timeStart && ns.time*1000+millisecond <= subtitles[i].timeEnd) {
_root.txt_sous_titres = subtitles[i].subtext;
}
}
return "";
}
getSubtitle();