Je veux construire un composant, où l'utilisateur peut lire une vidéo dans un FlexSpark VideoDisplay. Il y aura un bouton et chaque fois que le bouton est pressé, je veux enregistrer l'heure actuelle du VideoDisplay plus une capture d'écran. La capture d'écran doit être en quelque sorte enregistrée, car je veux afficher tous les temps et toutes les captures d'écran dans un DataGrid (les captures d'écran doivent apparaître lorsque l'utilisateur passe une heure dans le DataGrid). Alors, comment puis-je prendre des captures d'écran du Spark VideoDisplay et les sauvegarder/les afficher?Comment faire des captures d'écran d'un FlexSpark VideoDisplay?
Répondre
Vous pouvez prendre des instantanés de plusieurs manières, de cette façon, vous utilisez simplement la classe ImageSnapshot, mais vous pouvez le faire en dessinant manuellement le bitmap de l'affichage vidéo si vous le souhaitez. Voici un exemple:
Renderer
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100" height="100" creationComplete="trace(data)">
<mx:Image source="{this.data}" width="100%" height="100%"/>
</s:ItemRenderer>
App échantillon
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.graphics.ImageSnapshot;
public function takeSnapshot():void
{
var snapshot:BitmapData = ImageSnapshot.captureBitmapData(videoDisplay);
var bitmap:Bitmap = new Bitmap(snapshot);
list.dataProvider.addItem(bitmap);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout horizontalAlign="center"/>
</s:layout>
<s:VideoDisplay id="videoDisplay"
source="video.mov"
width="400" height="300"/>
<s:Button id="button" click="takeSnapshot()"/>
<s:List id="list" horizontalCenter="0" width="100%" itemRenderer="SnapshotRenderer">
<s:dataProvider>
<mx:ArrayList/>
</s:dataProvider>
<s:layout>
<s:TileLayout/>
</s:layout>
</s:List>
</s:Application>
Pour accomplir exactement ce que vous décriviez (prendre un instantané et enregistrer instantané), vous pouvez stocker ces données dans un tableau dans cette méthode takeSnapshot
, ou vous pouvez faire une boucle à travers le list.dataProvider
obtenir les bitmaps. Ensuite, il suffit de les passer à un langage backend (ruby, python, php ...) pour sauvegarder.
espoir qui aide, Lance
utiliser le JPEGEncoder flex pour le convertir en ByteArray, puis coder le tableau d'octets en utilisant le b64encoder comme suit:
var jpg:JPEGEncoder = new JPEGEncoder();
var ba:ByteArray = jpg.encode(bitmapData);
var b64encoder:Base64Encoder = new Base64Encoder();
b64encoder.encodeBytes(ba);
var b64String:String = b64encoder.flush();
Maintenant, vous pouvez passer votre b64String à votre serveur via la méthode de publication HTTP :)
- 1. VideoDisplay flex toujours être la même taille que le VideoDisplay
- 2. Utiliser QT Jambi pour faire des captures d'écran
- 3. Comment prendre des captures d'écran avec Eclipse?
- 4. videoDisplay metadatareceiced ready totaltime
- 5. combiner des captures dans regex
- 6. Comment écouter les captures d'écran
- 7. Bibliothèque C# pour prendre des captures d'écran?
- 8. Flex VideoDisplay reconnecter après idletimeout
- 9. Comment faire des captures d'écran de pages web en utilisant ruby et un serveur unix?
- 10. Prendre des captures d'écran d'un contrôle Webbrowser
- 11. comment prendre des captures d'écran de la boîte
- 12. Suppression de VideoDisplay dans flex/flash
- 13. Regex: captures, groupes, confusion
- 14. Flex 4 Couleur d'arrière-plan de VideoDisplay
- 15. prendre des captures d'écran à partir d'une vidéo flv
- 16. Prendre des captures d'écran ** rapidement ** à partir de python
- 17. Capture des captures d'écran d'un poste de travail distant réduit
- 18. Comment capturer des captures d'écran d'un clip vidéo 50 minutes dans le clip et le faire rapidement?
- 19. Le point au hasard sur VideoDisplay n'est pas assez précis
- 20. C# - contrôle WebBrowser semble mettre en cache des captures d'écran
- 21. Les captures d'écran ne contiennent que des pixels noirs
- 22. PHP exécutant script Bash retournant seulement des captures d'écran noir
- 23. ajouter des captures d'écran pour la soumission de l'iphone
- 24. nouvelles captures d'écran à Télécharger des iTunes Connect
- 25. VideoDisplay ne peut pas charger les fichiers FLV locaux
- 26. Comment générer des captures vidéo de fichiers vidéo via la ligne de commande linux
- 27. Flex VideoDisplay arrête la mise en mémoire tampon
- 28. Comment puis-je stocker des captures regex dans un tableau en Perl?
- 29. Comment extraire des captures d'écran aléatoires à partir d'un fichier SWF? Sous Linux
- 30. Comment créer des vignettes/captures d'écran de fichiers PDF sur mon serveur Linux?
Merci! Je ne veux pas vraiment les sauver. Ils devraient juste être disponibles à l'utilisateur pendant qu'il joue la vidéo. – Thomas