2009-07-06 5 views
0

J'ai chargé une vidéo dans le composant FLVPlayback et je cherche un moyen d'obtenir le temps total et le temps joué jusqu'ici et les afficher dans deux champs de texte afin que le résultat final ressemble à quelque chose comme "00:12/00: 50 ".Obtenez le temps total et le temps joué à partir du composant Flash Video?

En ce moment je définis la vidéo par l'inspecteur de composants mais j'espère finalement définir ce bit par actionscript aussi bien. Tous les conseils seraient grandement appréciés.

Répondre

1

Vous pouvez trouver le temps ici: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#playheadTime

Et ici: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#totalTime

Il y a aussi un événement déclenché à intervalles réguliers de sorte que vous pouvez facilement mettre à jour le temps: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#event:playheadUpdate

Modifier: Liens mis à jour

+1

ces liens ne fonctionnent plus comme prévu –

+0

je l'ai mis à jour les liens. –

+0

les liens ne fonctionnent pas. N'aurait-il pas été préférable de marquer la réponse avec des exemples de code réels comme le bon? Ils durent évidemment plus longtemps! –

-1

I k maintenant c'est une vieille question - mais j'ai cherché un certain temps et n'ai pas trouvé une réponse.

Si vous utilisez le composant FLVPlayback, vous pouvez toujours utiliser MetadataEvent afin d'obtenir les métadonnées incorporées dans un fichier FLV/F4V. J'ai créé une occurrence FLVPlayback via AS3, écouté un événement MedataEvent.METADATA_RECEIVED, puis accédé à la propriété info renvoyée par l'événement. Dans le code, il ressemble à ceci:


package 
{ 
import fl.video.FLVPlayback; // you will need to drag the component to the stage, then delete it. This puts some stuff in the library and now you can access the class 
import fl.video.MetadataEvent; 
import flash.display.MovieClip; 

public class flvTest extends MovieClip 
{ 
private var inputURL:String = "./test.flv"; // change this to the location of your FLV/F4V 
private var player:FLVPlayback; 

public function flvTest():void 
{ 
player = new FLVPlayback(); 
// set x,y,width,height values if you want 
player.autoRewind = true; // I use this so when you press stop, it goes to the first frame 
player.load(inputURL); // you can use load() or source= 
player.addEventListener(MetadataEvent.METADATA_RECEIVED, getMetaFromFLV); 

addChild(player); 
} 

private var getMetaFromFLV(metadataEvent:MetadataEvent = null):void 
{ 
trace("FLV Duration: " + metadataEvent.info.duration); 
} 

} 
} 

Vous devez évidemment des commandes du lecteur etc, mais la clé de cette réponse est la partie MetadataEvent. La propriété info renvoyée par l'événement contient TOUTES les métadonnées incorporées dans le fichier vidéo FLV/F4V, ce qui vous permet d'obtenir de nombreuses autres valeurs.

(Beaucoup d'autres recherches et articles expliquent seulement comment obtenir les métadonnées de NetStream et similaires, qui sont utilisées lors de la connexion à un serveur Flash Media - alors qu'ici nous accédons à un fichier local et voulons simplement les données que le fichier aurait dû y être intégré).

J'espère que cela aide quelqu'un!

1

Pour obtenir le temps:

 
flvPlayer.playheadTime;// gives you the current videp position 

En ce qui concerne la mise en forme:

 
public static function formatTime(time:Number, detailLevel:uint = 2):String { 
    var intTime:uint = Math.floor(time); 
    var hours:uint = Math.floor(intTime/ 3600); 
    var minutes:uint = (intTime - (hours*3600))/60; 
    var seconds:uint = intTime - (hours*3600) - (minutes * 60); 
    var hourString:String = detailLevel == HOURS ? hours + ":":""; 
    var minuteString:String = detailLevel >= MINUTES ? ((detailLevel == HOURS && minutes = MINUTES)) ? "0":"") + seconds; 
    return hourString + minuteString + secondString; 
} 
Questions connexes